在select语句中使用CASE WHEN

use*_*low 5 sql case

我正在使用以下用于选择语句的情况.应用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,
Run Code Online (Sandbox Code Playgroud)

我给的输入是:

 '1','ALL', 'ALL'
Run Code Online (Sandbox Code Playgroud)

a1e*_*x07 3

而不是when prog.has_post_calc_screen = ''Null''when prog.has_post_calc_screen IS NULLTHEN ...(你也可以写,ELSE ...因为你已经处理了 true 和 false,所以唯一可能的值为 NULL)。

更新 你也可以只写

 case
   when prog.has_post_calc_screen = true then 'True'
   else 'False'
 END ....
Run Code Online (Sandbox Code Playgroud)