在SQL Case中检查NULL的正确做法是什么?在SQL查询中处理NULL
1)使用ISNULL()
WHEN (ISNULL(TABLE.COLUMN,0) > 0) THEN ....
2)使用IS NULL
WHEN TABLE.COLUMN IS NOT NULL THEN ....
在SQL Case中检查NULL的正确做法是什么?在SQL查询中处理NULL
1)使用ISNULL()
WHEN (ISNULL(TABLE.COLUMN,0) > 0) THEN ....
2)使用IS NULL
WHEN TABLE.COLUMN IS NOT NULL THEN ....
如果您正在检查任何条件,则始终使用'is null',如果用不同的值替换任何值,则使用isnull(a,b)。 请检查以下内容 - http://msdn.microsoft.com/en-us/library/ms184325.aspx
特意阅读最后一行!
第二个是正确的,如果你想为您在SQL的情况下空值..
这也是检查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
INSERT INTO @emp VALUES('')' - 那么这个呢?它不是NULL,只是空的。 – cairnz 2012-07-23 07:40:49
@ cairnz编辑我的答案。 – 2012-07-23 08:43:27
如果列中的值大于0或null,两者都是正确的。 如果您想了解SQL Server中空值的奇怪行为,可以参考此post。当您使用ISNULL(TABLE.COLUMN,0) > 0)
函数,空值必须转换到零拳头那么应该采取所有值大于
,当你正在检查一列是否为空或不是它是更好地使用 COL IS NULL
零
此功能在另一种场合很有用。可以说我是否想返回所有的空值以及负值。
所以查询将
select * from table where col is null or col<0
这可以改写为
select * from table isnull(col,-1)<0
两者都是在那里的原因是正确的,但是ISNULL可当你想使用一个恒定值是有益的而不是在该列中的NULL,同时计算SUM,平均值等。
例如,您可以检查:http://www.w3schools.com/sql/sql_isnull.asp
由于此功能,我个人使用ISNULL/COALESCE进行计算。
可能的重复:http://stackoverflow.com/questions/3118213/isnull-vs-is-null – 2012-07-23 06:59:47