1、NULL 是Sql Server中的数据类型, NULL的值是未知的、是不确定的。由于 NULL 存在着无数的可能,因此两个 NULL 不是相等的关系,同样也不能说两个 NULL 就不相等,或者比较两个 NULL 的大小,这些操作都是没有意义,得不到一个确切的答案的。因此,对 NULL 的 = 、 != 、 > 、 < 、 >= 、 <= 等操作的结果 都是未知的,也就算说,这些操作的结果仍然是 NULL 。
2、SQL提供了两个谓词Is NULL和IS Not NULL来取代=null和<>null, 使用not in 谓词过滤数据时,如果 in的值中包含null,则永远不会返回值
3、当进行分组和排序时 ,认为两个NULL值是相等的,就是说GROUP BY子句会在每个组中重新组织所有的NULL值
4、OrderBY子句也会对所有的NULL值进行排序,T-SQL是把NULL值得排在了有效值之前
5、所有的聚合函数都会忽略NULL值,只有一个例外Count(*),假设一个组有两行,其QTY分别为3,null,表达式Count(*)返回2,COunt(QTY)返回1
6、判断null值语句:select * from 表 where 字段 is null;
7、转换null值语句:select 字段1,字段2,字段3,isnull(字段3,’某个值’) from 表;
二、变量的默认值与 null 值
命名一个变量后,如果没有给它赋初始值,它的值就是 null 。有时候需要注意初始 null 值和通过 select 语句给变量后期赋 null 的区别。因为此 ’null’ 非彼 ’null’ 。
三、Case 语句中的 null
Case 中的 when 语句注意不要写成 when null, 否则得不到想要的结果。
下面的第 1 条 sql 错误, 2 , 3 正确。
select case column2 when null then 'a' else 'b' end as column3 from cassaba_null
select case isnull ( column2, 'a' ) when 'a' then 'a' else 'b' end as column3 from cassaba_null
select case when column2 is null then 'a' else 'b' end as column3 from cassaba_null
文章转载自: Sql Server中的Null值 http://www.studyofnet.com/news/663.html