在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