可以在CASE函数中放入多重OR条件吗?

时间:2019-03-22 09:57:13

标签: sql amazon-redshift

我认为这意味着考虑第一种情况或第二种情况。如果其中任何一种是正确的,则返回1。对吗?

case when upper(casetype) = 'ADHOC_SUCCESSFUL' 
       then 1 
     when casetype like 'Boundary_Issue_T%' 
       then 1 
     when upper(casetype) like '%ACTIVE_SUC%' 
       then 1 
End as Successful

1 个答案:

答案 0 :(得分:1)

一个case表达式保证条件是按顺序求值的。该表达式返回与第一个then关联的when子句,该子句的计算结果为true。

在这种情况下,您可以这样写:

(case when upper(casetype) = 'ADHOC_SUCCESSFUL' or
           casetype like 'Boundary_Issue_T%' or
           upper(casetype) like '%ACTIVE_SUC%' 
      then 1 
 end) as Successful

我也倾向于添加else 0,因此结果是01,而不是NULL1

Redshift支持布尔类型,因此您也可以这样做:

(upper(casetype) = 'ADHOC_SUCCESSFUL' or
 casetype like 'Boundary_Issue_T%' or
 upper(casetype) like '%ACTIVE_SUC%' 
) as Successful