2

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

1)使用 ISNULL()

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

2)使用 IS NULL

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

6 回答 6

1

如果您想在 SQL 案例中检查空值,第二个是正确的..

于 2012-07-23T06:57:59.723 回答
1

如果您正在检查任何条件,则始终使用“is null”,如果将任何值替换为不同的值,则使用 isnull(a,b)。检查以下 - http://msdn.microsoft.com/en-us/library/ms184325.aspx

特意看最后一行!!!

于 2012-07-23T09:59:50.790 回答
0

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

检查列的长度,如果它大于 1 或等于 1,则它是一个 NON NULL 值。

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
于 2012-07-23T07:05:19.250 回答
0

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

于 2012-07-23T07:11:15.393 回答
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
于 2012-07-23T09:01:30.777 回答
0

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

由于这个特性,我个人使用 ISNULL/COALESCE 进行计算。

于 2012-07-23T09:33:05.333 回答