SQL 中 NULL值測試代碼

在SQL語句中,where 子句:where t.modifier = null ,這里不可以使用NULL關鍵字,因為它不是一個真正的值,它僅僅是一個符號,因為它的值是未知的。

剛剛想從數據庫中的表EXPERT_DETAILS中檢索出修改人Modifier(類型 VARCHAR2(20),可為空)為空的那些記錄,因為該字段的類型為VARCHAR2(20),我使用的SQL語句為
代碼如下:
select * from expert_details twhere t.modifier = ”

沒有檢索出一條記錄,而這與存儲在該表中的記錄是不相符的。后來想到即便是空字符型存儲在數據庫中也應該是NULL而不是”。

然后我使用下列SQL 語句,仍然沒有檢索出一條記錄。
代碼如下:
select * from expert_details t
where t.modifier = null

最后我想到了SQL中的NULL 值測試。使用如下語句,終于檢索出了想要的結果。
代碼如下:
select * from expert_details t
where t.modifier is null

在SQL語句中,where 子句:where t.modifier = null ,這里不可以使用NULL關鍵字,因為它不是一個真正的值,它僅僅是一個符號,因為它的值是未知的。當t.modifier本身就是null時,即where子句為:where null= null ,當等號兩邊的值都是未知的時候,結果是TRUE還是FALSE,SQL不能給出一個明確的結果,所以查詢出的結果也為NULL。

因此必須明確使用NULL值測試即 字段 IS NULL 或者其否定形式 字段 IS NOT NULL 來檢測NULL值。

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享