SQL中not in與null值的具體使用
A not in B的原理是拿A表值與B表值做是否不等的比較, 也就是a != b. 在sql中, null是缺失未知值而不是空值。
當(dāng)你判斷任意值a != null時, 官方說, “You cannot use arithmetic comparison operators such as =, <, or <> to test for NULL”, 任何與null值的對比都將返回null. 因此返回結(jié)果為否,這點(diǎn)可以用代碼 select if(1 = null, ‘true’, ‘false’)證實(shí).
舉個例子
select id,case when p_id is null then 'Root' when id not in (select p_id from tree) then 'Leaf' end type else 'Inner' from tree
這種寫法會導(dǎo)致Leaf結(jié)果完全看不到
從上述原理可見, 當(dāng)詢問 id not in (select p_id from tree)時, 因?yàn)閜_id有null值, 返回結(jié)果全為false, 于是跳到else的結(jié)果, 返回值為inner. 所以在答案中,leaf結(jié)果從未彰顯,全被inner取代.
到此這篇關(guān)于SQL中not in與null值的具體使用的文章就介紹到這了,更多相關(guān)SQL not in與null值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Sql Server中Cross Apply關(guān)鍵字的使用 詳解
在 SQL Server 中,Cross Apply 關(guān)鍵字主要用于從一個表中獲取數(shù)據(jù),并對每一行數(shù)據(jù)應(yīng)用一個表值函數(shù),然后返回函數(shù)的結(jié)果,這篇文章主要介紹了Sql Server中Cross Apply關(guān)鍵字的使用 ,需要的朋友可以參考下2023-11-11Sql學(xué)習(xí)第四天——SQL 關(guān)于with cube,with rollup和grouping解釋及演示
CUBE 生成的結(jié)果集顯示了所選列中值的所有組合的聚合。ROLLUP 生成的結(jié)果集顯示了所選列中值的某一層次結(jié)構(gòu)的聚合,接下再看看對grouping的解釋,感興趣的朋友可以參考下哈2013-03-03SQL Server誤區(qū)30日談 第12天 TempDB的文件數(shù)和需要和CPU數(shù)目保持一致
TempDB的文件沒有必要分布在多個存儲器之間。如果你看到PAGELATCH類型的等待,即使你進(jìn)行了分布也不會改善性能,而如果PAGEIOLATCH型的等待,或許你需要多個存儲器,但這也不是必然-有可能你需要講整個TempDB遷移到另一個存儲系統(tǒng),而不是僅僅為TempDB增加一個文件2013-01-01基于Microsoft SQL Server實(shí)現(xiàn)編寫漢字轉(zhuǎn)拼音函數(shù)
在搜索應(yīng)用中,我們一般會提供一個搜索框,輸入關(guān)健字,點(diǎn)擊查詢按鈕以獲取結(jié)果數(shù)據(jù),大部分情況我們會提供模糊查詢的形式以在一個或多個字段進(jìn)行搜索以獲取結(jié)果,本文給大家就介紹了基于Microsoft SQL Server實(shí)現(xiàn)編寫漢字轉(zhuǎn)拼音函數(shù),需要的朋友可以參考下2024-03-03SqlServer如何通過SQL語句獲取處理器(CPU)、內(nèi)存(Memory)、磁盤(Disk)以及操作系統(tǒng)相關(guān)信息
這篇文章主要介紹了SqlServer如何通過SQL語句獲取處理器(CPU)、內(nèi)存(Memory)、磁盤(Disk)以及操作系統(tǒng)相關(guān)信息的相關(guān)資料,需要的朋友可以參考下2015-11-11