带查询的空记录和空记录

时间:2014-09-02 06:37:43

标签: sql sql-server

我对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和数据记录,但不需要空字符串

先谢谢。

1 个答案:

答案 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

https://en.wikipedia.org/wiki/Null_(SQL)