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