當查詢布爾字段爲空,爲什麼查詢空布爾字段
Select * From MyTableName where [boolfieldX] <> 1
未與[boolfieldX]空返回任何行? 1 <> null我會有預期的行返回null。
當查詢布爾字段爲空,爲什麼查詢空布爾字段
Select * From MyTableName where [boolfieldX] <> 1
未與[boolfieldX]空返回任何行? 1 <> null我會有預期的行返回null。
無法使用比較運算符(例如=
,<
或<>
)測試NULL
值。
您必須使用IS NULL
和IS NOT NULL
運營商來替代,或者你要使用的功能,如ISNULL()
和COALESCE()
Select * From MyTableName where [boolfieldX] <> 1 OR [boolfieldX] IS NULL
OR
Select * From MyTableName where ISNULL([boolfieldX],0) <> 1
瞭解更多關於空比較Stackoverflow Documentation
Read mo再在Stackoverflow Documentation
約ISNULL()
和COALESCE()
功能嗨嘗試使用此查詢:
select * from mytablename where [boolFieldX] is null And [boolFieldX] <> 1
我認爲,這是因爲空是一個未知的值。您無法查詢未知的「值」。在我看來,將null看作一個「價值」是一個矛盾,因爲它代表一個未知數。使用運算符「空」和「不空」連同任何選擇條件將返回所需的結果,或通過將空值轉換爲替代值來進行轉換將如下工作:IsNull([boolfield],'一些兼容值')
[@Graham](https://stackoverflow.com/users/641914/graham)請嘗試鼓勵修復鏈接到文檔,而不是直接刪除鏈接和周圍段落,留下評論。 –