在我的存储过程中,我的select语句中有一个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
我被困在第二部分,任何帮助将不胜感激。谢谢
答案 0 :(得分:2)
ISNULL(NULLIF(char_01, ''), 'M')
如果char_01为空,则NULLIF将返回NULL,然后ISNULL将选择“M”。如果char_01 IS NULL,NULLIF仍将返回NULL,ISNULL将再次拾取'M'。如果char_01既不是NULL也不是空,则NULLIF和ISNULL都将返回其值。
样品:
create table tbl (col1 varchar(5));
insert into tbl Values (''), (' '), (NULL), ('abc'), ('NULL');
SELECT ISNULL(NULLIF(col1, ''), 'M')
FROM tbl