在我的 where 子句中, 我有以下内容:
where SharePt NOT LIKE 'SharePoint Document%'
即使 SharePt 为空,结果也不会返回任何内容。
但是当我执行以下操作时它会起作用 或者 SharePtVer 为 NULL
where SharePt NOT LIKE 'SharePoint Document%' OR SharePt IS NULL
想知道为什么 NOT LIKE 在包含 NULL 方面不起作用>
最佳答案
SQL 使用 three-valued logic ... NULL
与 FALSE
不同,NOT NULL
与 TRUE
不同。
NULL
表示没有值,在SQL的三值逻辑中作用未知值:
A AND B | TRUE | FALSE | Unknown
--------+---------+---------+--------
TRUE | TRUE | FALSE | Unknown
FALSE | FALSE | FALSE | FALSE
Unknown | Unknown | FALSE | Unknown
A OR B | True | False | Unknown
--------+---------+---------+--------
True | True | True | True
False | True | False | Unknown
Unknown | True | Unknown | Unknown
当评估 where SharePt NOT LIKE 'SharePoint Document%'
时,如果 SharePt
为 NULL
或未知...那么结果将是未知的... SharePt
可能是也可能不是 LIKE 'SharePoint Document%'
。
关于sql NOT LIKE NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9777904/