给出以下表格和数据
CREATE TABLE #temps
(
id int,
name varchar(max)
)
INSERT INTO #temps VALUES (1, 'foo')
INSERT INTO #temps VALUES (2, '')
INSERT INTO #temps VALUES (3, NULL)
Run Code Online (Sandbox Code Playgroud)
我要选择没有所有行foo
的name
列.
SELECT * FROM #temps
WHERE name <> 'foo'
DROP TABLE #temps
Run Code Online (Sandbox Code Playgroud)
为什么这只返回第2行?第3行中的名称不是foo
,应该返回.
我的解决方案是
SELECT * FROM #temps
WHERE ISNULL(name, '') <> 'foo'
Run Code Online (Sandbox Code Playgroud)
为什么这只返回第2行?第3行中的名称不是foo,应该返回.
其他人已经回答了该怎么做.至于为何如此,null
代表一种未知的价值.第name
3行中列的值可以是foo
.我们不知道因为价值未知.
该where
子句必须评估true
为返回一行.name <> 'foo'
不是true
,它不是false
未知的.
归档时间: |
|
查看次数: |
1135 次 |
最近记录: |