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)匀豢梢酝ㄟ^(guò)下面語(yǔ)句執(zhí)行插入操作
INSERT INTO Table (TestCol) VALUES(‘')
其中的TestCol字段,其實(shí)在設(shè)計(jì)的時(shí)候,已經(jīng)被設(shè)計(jì)為NOT NULL,但我們需要了解一點(diǎn),在sql server中,null和空格是不同的,也就是說(shuō),上面的語(yǔ)句插入的是一個(gè)空,但并不是NULL,只有當(dāng)我們的插入語(yǔ)句中沒(méi)有該字段的時(shí)候,才會(huì)被認(rèn)為違反非空的條件約束,這里可能用英文的表達(dá)可能會(huì)更加的準(zhǔn)確一些,如果把NULL翻譯成“空”的話,可能就會(huì)很容易搞混了。此外,如果我們的字段是INT類型的話,如果我們插入空的話,會(huì)得到一個(gè)0,也就是說(shuō),MS Sql server會(huì)自動(dòng)幫我們處理對(duì)空格的轉(zhuǎn)化。
但是在Oracle中,這個(gè)便利便不存在咯,我們必須嚴(yán)格按照規(guī)則來(lái)進(jìn)行插入,也就是說(shuō),我們?cè)傧胍晥D通過(guò)插入空來(lái)滿足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ì)程序處理語(yǔ)句進(jìn)行嚴(yán)格的條件控制才行,否則類似地問(wè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和空格是不同的,也就是說(shuō),上面的語(yǔ)句插入的是一個(gè)空,但并不是NULL,只有當(dāng)我們的插入語(yǔ)句中沒(méi)有該字段的時(shí)候,才會(huì)被認(rèn)為違反非空的條件約束,這里可能用英文的表達(dá)可能會(huì)更加的準(zhǔn)確一些,如果把NULL翻譯成“空”的話,可能就會(huì)很容易搞混了。此外,如果我們的字段是INT類型的話,如果我們插入空的話,會(huì)得到一個(gè)0,也就是說(shuō),MS Sql server會(huì)自動(dòng)幫我們處理對(duì)空格的轉(zhuǎn)化。
但是在Oracle中,這個(gè)便利便不存在咯,我們必須嚴(yán)格按照規(guī)則來(lái)進(jìn)行插入,也就是說(shuō),我們?cè)傧胍晥D通過(guò)插入空來(lái)滿足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ì)程序處理語(yǔ)句進(jìn)行嚴(yán)格的條件控制才行,否則類似地問(wèn)題在聯(lián)調(diào)的時(shí)候會(huì)讓我們陷入一個(gè)接著一個(gè)的噩夢(mèng)~
相關(guān)文章
Oracle中在pl/sql developer修改表的2種方法
Oracle中在pl/sql developer修改表的2種方法,需要的朋友可以參考一下2013-03-03
Oracle中獲取會(huì)話信息的兩個(gè)函數(shù)分享
這篇文章主要介紹了Oracle中獲取會(huì)話信息的兩個(gè)函數(shù)分享,本文分別講解了USERENV和兩個(gè)函數(shù)sys_context,并對(duì)可以獲取哪些信息作了介紹,需要的朋友可以參考下2014-12-12
Oracle自我補(bǔ)充之trunc()函數(shù)的使用方法
TRUNC函數(shù)為指定元素而截去的日期值。下面通過(guò)本文給大家介紹Oracle自我補(bǔ)充之trunc()函數(shù)的使用方法,感興趣的朋友一起看看吧2017-06-06
Oracle的substr和instr函數(shù)簡(jiǎn)單用法
這篇文章主要介紹了Oracle的substr和instr函數(shù)簡(jiǎn)單用法 的相關(guān)資料,需要的朋友可以參考下2015-12-12
Oracle數(shù)據(jù)庫(kù)新裝之后出現(xiàn)的監(jiān)聽(tīng)程序無(wú)法正常啟動(dòng)和運(yùn)行(Oracle-12514)問(wèn)題
這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)新裝之后出現(xiàn)的監(jiān)聽(tīng)程序無(wú)法正常啟動(dòng)和運(yùn)行(Oracle-12514)問(wèn)題,需要的朋友可以參考下2018-11-11
oracle下一條SQL語(yǔ)句的優(yōu)化過(guò)程(比較詳細(xì))
很簡(jiǎn)單的一次調(diào)整,語(yǔ)句加了適當(dāng)?shù)乃饕笮阅芫陀写蠓奶嵘?。?dāng)時(shí)看到這條語(yǔ)句的時(shí)候,第一感覺(jué)就是執(zhí)行效率肯定低下。語(yǔ)句的功能是求某一客戶當(dāng)天產(chǎn)品的總銷量。2010-04-04

