sql中NULL的问题
6463 点击·0 回帖
![]() | ![]() | |
![]() | sql中NULL的问题 今天一不小心在sql中写出以下脚本 select defaultPositionId from TableName where UserId=1100528 and defaultPositionId =null 执行之后大惊怎么没有结果,使用select * from tableName 该列确实为null怎么查补出来难道自己人品问题于是自己又写了以下判断 if(null=null) BEgin print 'fff' end else begin print 'gggg' end www.atcpu.com 输出结果如下: 无语难道null与null还有区别。 于是找搜索引擎,在sql中null是一种数据类型,null不能与任何列或者变量使用"="或者"!="去比较 判断某列或者变量为null是只能用is (not) null 去判断这样他的返回值才是true或者false 关于null的运用 NULL值与索引 如果一个列中有NULL值,那么不可以在这个列上建唯一索引,可以建立非唯一索引;但是如果一个字段有很多行有NULL值,那么在这个字段上建索引效果不佳。所以建议不在在一个频繁出现NULL值的字段上建索引(有待证实)。 NULL与排序 NULL参与排序时总是作为最小值存在,即ORDER BY COL ASC时COL为NULL的行在最前面,反之在最后面。 附注:t-sql中三个关于NULL的函数: ISNULL(check_expression, replacement_value) check_expression 与 replacement_value 数据类型必须一致 如果 check_expression 为 NULL,则返回 replacement_value 如果 check_expression 不为 NULL,则返回 check_expression www.atcpu.com NULLIF 用于检查两个表达式,语法: NULLIF(expression, expression) 如果两个 expression 相等,则返回 NULL,该 NULL 为第一个 expression 的数据类型 如果两个 expression 不相等,则返回第一个 expression COALESCE()函数可以接受一系列的值,如果列表中所有项都为空(null),那么只使用一个值。然后,它将返回第一个非空值。这一技巧描述了创造性使用SQL Server 中COALESCE()函数的两种方法。 帮助连接:http://msdn.microsoft.com/zh-cn/library/ms172138.aspx | |
![]() | ![]() |