我有一个有两列同名的表
ValueA ValueB ValueA
12 Yes
No NULL
20 Yes
0 No 0
3 No 3
逻辑是
ValueA
为''
ValueB
为'No'
ValueA
应为''
(不是NULL
)我写了这个案例陈述,但它给了我NULL
而不是''
Case when ValueB ='No' then convert(varchar(25), ValueA)
when ValueB ='No' and ValueA ='' then ''
else ''
end
即使我写了
Case when ValueB
when 'No' then convert(varchar(25), ValueA)
else ''
end
以上两个代码都给出了相同的结果
如何在第二个ValueA列中使用NULL
替换或删除''
?
答案 0 :(得分:1)
您需要指定NULL
作为输出的特定情况。
CASE WHEN ValueA = '' AND ValueB = 'No' THEN NULL
WHEN ValueB = 'No' THEN convert(varchar9250, ValueA)
ELSE ''
END
修改强>
那时我误解了你的问题。但你可以使用相同的方法......CASE WHEN ValueA = '' AND ValueB = 'No' THEN ''
WHEN ValueB = 'No' THEN convert(varchar9250, ValueA)
ELSE ''
END
或者,正如人们所建议的那样,使用ISNULL或COALESCE删除NULL值......
CASE WHEN ValueB = 'No' THEN ISNULL(convert(varchar9250, ValueA), '')
ELSE ''
END
答案 1 :(得分:0)
我希望我理解正确的问题,你可以使用coalesce或isnull来替换空值。
这可能是你的案例陈述:
case when ValueB = 'Yes' then ''
when ValueB = 'No' then coalesce(cast(ValueA as varchar(25)), '')
else null end
答案 2 :(得分:0)
这可能有所帮助:
Select
case when ValueA = '' and ValueB = 'No' then ''
when ValueB = 'No' then ValueA else '' end [ValueA]
from table