我对NULL和''(空)数据有疑问。 以下是查询
with tempCTS
as(
select null as [blank] )
select * from tempCTS t
输出为NULL
另一个带空检查的查询
with tempCTS
as(
select null as [blank] )
select * from tempCTS t where t.blank <> ''
输出什么都不是
我的问题是为什么一旦检查黑色检查就无法取出空记录
PS: - 我需要null和数据记录,但不需要空字符串
先谢谢。
答案 0 :(得分:3)
空值 不是普通字符串(包括空字符串),数字等。 Null 表示“ unknown “,”无关紧要“等等。这就是为什么
null <> ''
不是 true 或 false - 它又是 null (它可能是什么?想象一下像这样的比较如果我不知道&lt;&gt;''是什么。结果是我不知道是什么,没有数据可以将其设置为true或false)。所以
select ...
where null <> ''
不会返回任何记录。要测试空值, 为空 :
with
tempCTS as (
select null as [blank])
select *
from tempCTS t
where t.blank is null -- <- Is null