MS Server和Oracle中對NULL處理的一些細(xì)節(jié)差異
更新時間:2009年06月05日 23:49:44 作者:
SQL Server和Oracle中對插入數(shù)據(jù)值包含空的處理有所差異,在SQL Server中,我們可以把表字段設(shè)計為非空,但我們?nèi)匀豢梢酝ㄟ^下面語句執(zhí)行插入操作
INSERT INTO Table (TestCol) VALUES(‘')
其中的TestCol字段,其實在設(shè)計的時候,已經(jīng)被設(shè)計為NOT NULL,但我們需要了解一點,在sql server中,null和空格是不同的,也就是說,上面的語句插入的是一個空,但并不是NULL,只有當(dāng)我們的插入語句中沒有該字段的時候,才會被認(rèn)為違反非空的條件約束,這里可能用英文的表達(dá)可能會更加的準(zhǔn)確一些,如果把NULL翻譯成“空”的話,可能就會很容易搞混了。此外,如果我們的字段是INT類型的話,如果我們插入空的話,會得到一個0,也就是說,MS Sql server會自動幫我們處理對空格的轉(zhuǎn)化。
但是在Oracle中,這個便利便不存在咯,我們必須嚴(yán)格按照規(guī)則來進(jìn)行插入,也就是說,我們再想視圖通過插入空來滿足NOT NULL的設(shè)計約束,已經(jīng)不能成功啦,我們必須插入實實在在的內(nèi)容才能符合NOT NULL的約束。
像類似地一些細(xì)節(jié)在我們設(shè)計既要滿足MS Sql,又要滿足Oracle的系統(tǒng)地時候,尤其會成為我們需要處理的家常便飯,這一方面要求我們要嚴(yán)格規(guī)范我們的sql腳本,再者也要對程序處理語句進(jìn)行嚴(yán)格的條件控制才行,否則類似地問題在聯(lián)調(diào)的時候會讓我們陷入一個接著一個的噩夢~
其中的TestCol字段,其實在設(shè)計的時候,已經(jīng)被設(shè)計為NOT NULL,但我們需要了解一點,在sql server中,null和空格是不同的,也就是說,上面的語句插入的是一個空,但并不是NULL,只有當(dāng)我們的插入語句中沒有該字段的時候,才會被認(rèn)為違反非空的條件約束,這里可能用英文的表達(dá)可能會更加的準(zhǔn)確一些,如果把NULL翻譯成“空”的話,可能就會很容易搞混了。此外,如果我們的字段是INT類型的話,如果我們插入空的話,會得到一個0,也就是說,MS Sql server會自動幫我們處理對空格的轉(zhuǎn)化。
但是在Oracle中,這個便利便不存在咯,我們必須嚴(yán)格按照規(guī)則來進(jìn)行插入,也就是說,我們再想視圖通過插入空來滿足NOT NULL的設(shè)計約束,已經(jīng)不能成功啦,我們必須插入實實在在的內(nèi)容才能符合NOT NULL的約束。
像類似地一些細(xì)節(jié)在我們設(shè)計既要滿足MS Sql,又要滿足Oracle的系統(tǒng)地時候,尤其會成為我們需要處理的家常便飯,這一方面要求我們要嚴(yán)格規(guī)范我們的sql腳本,再者也要對程序處理語句進(jìn)行嚴(yán)格的條件控制才行,否則類似地問題在聯(lián)調(diào)的時候會讓我們陷入一個接著一個的噩夢~
相關(guān)文章
oracle查詢鎖表及解鎖,修改表字段名與復(fù)制表結(jié)構(gòu)和數(shù)據(jù)的方法
今天小編就為大家分享一篇關(guān)于oracle查詢鎖表及解鎖,修改表字段名與復(fù)制表結(jié)構(gòu)和數(shù)據(jù)的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12
使用geotools導(dǎo)入shp文件到Oracle數(shù)據(jù)庫時表名帶下劃線問題的解決方法
這篇文章主要介紹了使用geotools導(dǎo)入shp文件到Oracle數(shù)據(jù)庫時表名帶下劃線的問題解決 的相關(guān)資料,需要的朋友可以參考下2016-08-08
PDO取Oracle lob大字段,當(dāng)數(shù)據(jù)量太大無法取出的問題的解決辦法
最近,做sns的項目,用PDO連接Oracle數(shù)據(jù)庫,讀取Clob字段,當(dāng)數(shù)據(jù)量非常大的時候(上萬個字符),返回空值,從網(wǎng)上也沒有查到相關(guān)的資料。自己刻苦研究加上同事幫助,終于解決了。廢話就不說了,下面把內(nèi)容貼出來。2009-03-03
[Oracle] 如何使用觸發(fā)器實現(xiàn)IP限制用戶登錄
在Oracle里,不像MySQL那樣方便,可以直接在用戶上進(jìn)行IP限制,Oracle要實現(xiàn)用戶級別的IP限制,可以使用觸發(fā)器來迂回實現(xiàn),以下就是示例,需要的朋友可以參考下2013-07-07
Oracle數(shù)據(jù)庫及應(yīng)用程序優(yōu)化開發(fā)者網(wǎng)絡(luò)Oracle
Oracle數(shù)據(jù)庫及應(yīng)用程序優(yōu)化開發(fā)者網(wǎng)絡(luò)Oracle...2007-03-03

