在SQL Case中检查NULL的正确做法是什么?
1)使用ISNULL()
WHEN (ISNULL(TABLE.COLUMN,0) > 0) THEN ....
2)使用IS NULL
WHEN TABLE.COLUMN IS NOT NULL THEN ....
答案 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进行计算。