在SQL查询中处理NULL

时间:2012-07-23 06:52:23

标签: sql-server

在SQL Case中检查NULL的正确做法是什么?

1)使用ISNULL()

WHEN (ISNULL(TABLE.COLUMN,0) > 0) THEN ....

2)使用IS NULL

WHEN TABLE.COLUMN IS NOT NULL THEN ....

6 个答案:

答案 0 :(得分:1)

如果要在SQL情况下检查空值,则第二个是正确的。

答案 1 :(得分:1)

如果要检查任何条件,则始终使用'is null',如果用不同的值替换任何值,则使用isnull(a,b)。 检查以下内容 - http://msdn.microsoft.com/en-us/library/ms184325.aspx

特别阅读最后一行!!!

答案 2 :(得分:0)

这也是检查NON NULL值的另一种方法。

如果列的长度大于1或等于1,则检查列的长度,然后检查NON是否为空 值。

declare @emp table
 (
 fname varchar(50)
 );

 INSERT into @emp VALUES('vishwanath');
 INSERT into @emp VALUES('chetan');
 INSERT into @emp VALUES(NULL);
 INSERT into @emp VALUES(NULL);

 SELECT * FROM @emp
 where len(fname)>=1 and fname<>'';

 Gives..

     fname
--------------------------------------------------
    vishwanath
    chetan

答案 3 :(得分:0)

如果列中的值大于0或为null,则两者都是正确的。 如果您想了解SQL Server中空值的奇怪行为,可以参考此post

答案 4 :(得分:0)

当您检查列是否为空时,最好使用它  col IS NULL

当你使用ISNULL(TABLE.COLUMN,0) > 0)函数时,空值必须转换为零,然后应该将所有值都大于零

此功能在其他场合很有用。让我们说如果我想返回所有空值以及负值。

所以查询将是

select * from table where col is null or col<0

这可以重写为

select * from table isnull(col,-1)<0

答案 5 :(得分:0)

两者都是正确的,但是当你想在计算SUM,平均值等时在该列中使用常量值而不是NULL时,ISNULL可以是有用的。 例如,您可以查看:http://www.w3schools.com/sql/sql_isnull.asp

由于此功能,我个人使用ISNULL / COALESCE进行计算。