CASE WHEN语句中的OR条件

4
有一种使用CASE WHEN和OR的方法,就像这样吗?
SELECT
    case 'brasil'   
    when 'chile' OR 'brasil' THEN   
                        'ok'
    when 'argentina' then
        'ok2'
    when 'venezuela' THEN
        'ok3'
    ELSE
        'chaves'
end;

2
在 case 部分中的常量(case 'brasil')没有意义,而且本来就是无效的。如果它是有效的 SQL,那么也没有意义,因为你可以用简单的 select 'ok' 来替换它。 - user330315
1个回答

6

没错,你的想法是正确的。你可以在select..case语句中使用OR或IN关键字:

select

  case
  -- one way or writing OR
  when country = 'brasil' or country = 'chile' then '....'
  -- another way of writing OR
  when country in ('china', 'japan') then '...'
  else '..'
  end

from tablename;

示例:http://sqlfiddle.com/#!15/c1cef/2

2
请注意,在这种情况下,您不使用带有CASE <expression> WHEN...的简化版本的CASE语句。 - Tom H
我已经删除了PL/pgSQL的描述,因为它可能会误导OP。感谢您的关注。 - zedfoxus
你可以使用 in 来缩短 when 表达式: case when country in ('brasil', 'chile') then ... - user330315

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接