在select语句中使用CASE WHEN

时间:2011-04-20 19:46:37

标签: sql case

我正在使用以下用于带语句的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'

3 个答案:

答案 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''
相关问题