SQL 中 NULL值測(cè)試代碼
更新時(shí)間:2011年04月14日 23:30:44 作者:
在SQL語(yǔ)句中,where 子句:where t.modifier = null ,這里不可以使用NULL關(guān)鍵字,因?yàn)樗皇且粋€(gè)真正的值,它僅僅是一個(gè)符號(hào),因?yàn)樗闹凳俏粗摹?/div>
剛剛想從數(shù)據(jù)庫(kù)中的表EXPERT_DETAILS中檢索出修改人Modifier(類型 VARCHAR2(20),可為空)為空的那些記錄,因?yàn)樵撟侄蔚念愋蜑閂ARCHAR2(20),我使用的SQL語(yǔ)句為
select * from expert_details twhere t.modifier = ''
沒有檢索出一條記錄,而這與存儲(chǔ)在該表中的記錄是不相符的。后來(lái)想到即便是空字符型存儲(chǔ)在數(shù)據(jù)庫(kù)中也應(yīng)該是NULL而不是''。
然后我使用下列SQL 語(yǔ)句,仍然沒有檢索出一條記錄。
select * from expert_details t
where t.modifier = null
最后我想到了SQL中的NULL 值測(cè)試。使用如下語(yǔ)句,終于檢索出了想要的結(jié)果。
select * from expert_details t
where t.modifier is null
在SQL語(yǔ)句中,where 子句:where t.modifier = null ,這里不可以使用NULL關(guān)鍵字,因?yàn)樗皇且粋€(gè)真正的值,它僅僅是一個(gè)符號(hào),因?yàn)樗闹凳俏粗?。?dāng)t.modifier本身就是null時(shí),即where子句為:where null= null ,當(dāng)?shù)忍?hào)兩邊的值都是未知的時(shí)候,結(jié)果是TRUE還是FALSE,SQL不能給出一個(gè)明確的結(jié)果,所以查詢出的結(jié)果也為NULL。
因此必須明確使用NULL值測(cè)試即 字段 IS NULL 或者其否定形式 字段 IS NOT NULL 來(lái)檢測(cè)NULL值。
復(fù)制代碼 代碼如下:
select * from expert_details twhere t.modifier = ''
沒有檢索出一條記錄,而這與存儲(chǔ)在該表中的記錄是不相符的。后來(lái)想到即便是空字符型存儲(chǔ)在數(shù)據(jù)庫(kù)中也應(yīng)該是NULL而不是''。
然后我使用下列SQL 語(yǔ)句,仍然沒有檢索出一條記錄。
復(fù)制代碼 代碼如下:
select * from expert_details t
where t.modifier = null
最后我想到了SQL中的NULL 值測(cè)試。使用如下語(yǔ)句,終于檢索出了想要的結(jié)果。
復(fù)制代碼 代碼如下:
select * from expert_details t
where t.modifier is null
在SQL語(yǔ)句中,where 子句:where t.modifier = null ,這里不可以使用NULL關(guān)鍵字,因?yàn)樗皇且粋€(gè)真正的值,它僅僅是一個(gè)符號(hào),因?yàn)樗闹凳俏粗?。?dāng)t.modifier本身就是null時(shí),即where子句為:where null= null ,當(dāng)?shù)忍?hào)兩邊的值都是未知的時(shí)候,結(jié)果是TRUE還是FALSE,SQL不能給出一個(gè)明確的結(jié)果,所以查詢出的結(jié)果也為NULL。
因此必須明確使用NULL值測(cè)試即 字段 IS NULL 或者其否定形式 字段 IS NOT NULL 來(lái)檢測(cè)NULL值。
相關(guān)文章
sqlserver substring函數(shù)使用方法小結(jié)
在操作sqlserver時(shí)候用到了substring函數(shù),特整理一些實(shí)例,需要的朋友可以參考下。2009-12-12
SQL Server遍歷表中記錄的2種方法(使用表變量和游標(biāo))
遍歷表一般都要用到游標(biāo)在SQL Server中可以很容易的用游標(biāo)實(shí)現(xiàn)循環(huán)實(shí)現(xiàn)遍歷表中記錄,本文將介紹使用表變量和游標(biāo)實(shí)現(xiàn)數(shù)據(jù)庫(kù)中表的遍歷,感興趣的朋友可以了解下本文,或許可以幫助到你2013-02-02
sqlserver中去除字符串中連續(xù)的分隔符的sql語(yǔ)句
sqlserver中去除字符串中連續(xù)的分隔符的sql語(yǔ)句,需要的朋友可以參考下2012-05-05
有關(guān)數(shù)據(jù)庫(kù)SQL遞歸查詢?cè)诓煌瑪?shù)據(jù)庫(kù)中的實(shí)現(xiàn)方法
這篇文章主要介紹了有關(guān)數(shù)據(jù)庫(kù)SQL遞歸查詢?cè)诓煌瑪?shù)據(jù)庫(kù)中的實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下2015-10-10
SQL Server 遠(yuǎn)程連接服務(wù)器詳細(xì)配置(sp_addlinkedserver)
這篇文章主要介紹了SQL Server 遠(yuǎn)程連接服務(wù)器詳細(xì)配置(sp_addlinkedserver),需要的朋友可以參考下2017-01-01
SQL Server刪除表中的重復(fù)數(shù)據(jù)
這篇文章介紹了SQL Server刪除表中重復(fù)數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
GreatSQL 在SQL中如何使用 HINT 語(yǔ)法修改會(huì)話變量
GreatSQL推出新的優(yōu)化Hint功能,名為SET_VAR,允許用戶在查詢語(yǔ)句中修改數(shù)據(jù)庫(kù)的會(huì)話變量,但只對(duì)當(dāng)前查詢會(huì)話生效,不影響其他會(huì)話,本文給大家介紹GreatSQL 在SQL中如何使用 HINT 語(yǔ)法修改會(huì)話變量,感興趣的朋友一起看看吧2024-10-10

