2016-03-03 68 views
0

在我的存儲過程中,我的select語句中有一個case條件。將值設置爲空字符串(case語句)

像這樣:

select Distinct col_1, col_2, col_3, Case when (ISNULL(char_01, 'M') = 'M') 
Then 
..... 
Else 
End 

From my_table 

你可以看到,我有一個列名char_01。假設我想將char_01替換爲'M',那麼有一個null列。另外,我想在存在空列時將char_01替換爲'M'。到目前爲止,我只能檢查null(ISNULL(char_01, 'M') = 'M'),但我不知道如何也檢查空列。

我曾嘗試:

Case when (ISNULL (char_01, 'M') = 'M') or //If char_01 is empty, then replace this column as 'M' 
THen .... 
Else 
end 

我停留在第二部分,任何幫助將不勝感激。謝謝

回答

2
ISNULL(NULLIF(char_01, ''), 'M') 

如果char_01爲空NULLIF將返回NULL,反過來ISNULL將拿起'M'。如果char_01是NULL,則NULLIF仍將返回NULL,並且ISNULL將再次拾取'M'。如果char_01既不爲NULL也不爲空,則NULLIF和ISNULL都將返回其值。

NULLIF

樣品:

create table tbl (col1 varchar(5)); 
insert into tbl Values (''), (' '), (NULL), ('abc'), ('NULL'); 

SELECT ISNULL(NULLIF(col1, ''), 'M') 
FROM tbl 
+0

謝謝你的快速反應。它運作良好。 :) – RedRocket

+0

只是一個問題,如果我的char_01有NULL呢?我不認爲NULLIF允許表達式1中的空值 – RedRocket

+1

@DragonBorn它的確如果表達式1爲NULL並且表達式2爲'',NULLIF將返回NULL。請參閱我答案中的示例代碼。 – artm

相關問題