我正在使用以下用于带语句的select语句。应用CASE的列具有True,False和Null值。我试图为False和Null显示True for True和False。但它给我一个错误信息说:
“将varchar值'Null'转换为数据类型位时转换失败。”
这是我的疑问:
case
when prog.has_post_calc_screen = ''True'' then ''True''
when prog.has_post_calc_screen = ''False''then ''False''
when prog.has_post_calc_screen = ''Null'' then ''False''
End as Referal_ID,
我给的输入是:
'1','ALL', 'ALL'
答案 0 :(得分:3)
而不是when prog.has_post_calc_screen = ''Null''
写when prog.has_post_calc_screen IS NULL
那么......(你也可能写ELSE ...
因为你已经处理了true和false,所以唯一可能的值是NULL)。
<强>更新强> 你也可以写
case
when prog.has_post_calc_screen = true then 'True'
else 'False'
END ....
答案 1 :(得分:1)
您无法使用=
测试NULL值。您必须改为使用IS NULL
,因此请更改CASE
的一行:
when prog.has_post_calc_screen IS NULL then ''False''
答案 2 :(得分:1)
when COALESCE(prog.has_post_calc_screen,''False'') = ''False''then ''False''