我理解为什么这两个陈述是错误的
NULL LIKE 'X'
NULL NOT LIKE 'X'
Run Code Online (Sandbox Code Playgroud)
但是,我不明白为什么这些是:
NOT (NULL LIKE 'X')
NOT (NULL NOT LIKE 'X')
Run Code Online (Sandbox Code Playgroud)
例如,我认为这两个语句应该返回不同的值:
SELECT CASE WHEN NOT (NULL LIKE 'X') THEN 'True' ELSE 'False' END
SELECT CASE WHEN (NULL LIKE 'X') THEN 'True' ELSE 'False' END
Run Code Online (Sandbox Code Playgroud)
SQL使用三值逻辑.你说这些都是假的:
NULL LIKE 'X'
NULL NOT LIKE 'X'
NOT (NULL LIKE 'X')
NOT (NULL NOT LIKE 'X')
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.它们都是空的,既不是真也不是假.
一个WHEN或者WHERE子句拒绝非真值,这意味着空值和假值,所以看起来像null和false一样,但正如你所注意到的,它不是.:-)
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |