fb1
此查询排除select A from table1 where A <> '-'
以及空值。为什么空值?
答案 0 :(得分:1)
&LT;&GT;是标准SQL-92; !=是它的等价物。两者都评估价值, NULL不是 - NULL是占位符,表示存在缺失 价值观。
这就是为什么你只能使用IS NULL / IS NOT NULL作为谓词的原因 这种情况。
此行为并非特定于SQL Server。所有符合标准的SQL方言都以相同的方式工作。
参见参考资料:
Not equal <> != operator on NULL
只需找到适当的关键字即可有效浏览问题的结果
答案 1 :(得分:0)
NULL
明确地包含这些值,则 IS NULL
值总是被排除在外。 NULL表示不是未知。您无法使用= NULL
选择它们,也可以使用<> NULL
省略它们。与NULL
的任何比较结果都不在true
或false
中,而在未知中。
你必须使用
SELECT A from table1 where A IS NULL OR A <> '-';
使用COALESCE
的另一种方式:
SELECT A from table1 where COALESCE(A, '') <> '-';
阅读:https://en.wikipedia.org/wiki/SQL#Null_or_three-valued_logic_.283VL.29