Sql 在一个CASE函数中可以放置多个或多个条件吗? 我认为这意味着考虑第一种情况或第二种情况。如果其中任何一种是正确的,返回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

Sql 在一个CASE函数中可以放置多个或多个条件吗? 我认为这意味着考虑第一种情况或第二种情况。如果其中任何一种是正确的,返回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,sql,amazon-redshift,Sql,Amazon Redshift,case表达式保证按顺序计算条件。当计算结果为true时,表达式返回与第一个关联的then子句 在这种情况下,您可以这样写: (case when upper(casetype) = 'ADHOC_SUCCESSFUL' or casetype like 'Boundary_Issue_T%' or upper(casetype) like '%ACTIVE_SUC%' then 1 end) as Successful 我也倾向于

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

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

(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
,因此结果要么是
0
1
,而不是
NULL
1

红移支持布尔类型,因此您还可以执行以下操作:

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