可以在列表达式中使用 'In' 运算符吗?

Can you use an 'In' operator in a column expression?

使用 Oracle 11。尝试为概念性演示编写一些简单的代码。为了说明我要实现的目标,假设我有 SOMETABLE,其中有两列:ID 和 NAME,如下所示:

ID  NAME
---------
1   Tom
2   Larry
3   David
4   Steve

我正在尝试计算第三列,如果第二列与两个硬编码值之一匹配,则该列为真。类似这样的东西(这当然行不通。)

Select ID,
       NAME,
       (NAME in ('Larry', 'David')) as IS_FAVORITE
from SOMETABLE

并希望得到这个输出...

ID  NAME   IS_FAVORITE
----------------------
1   Tom    FALSE
2   Larry  True
3   David  True
4   Steve  FALSE

令我惊讶的是,有人告诉我 Oracle 没有布尔值的概念,我应该使用 'numeric strings' 或类似的东西,所以这也很好...

ID  NAME   IS_FAVORITE
----------------------
1   Tom    'N'
2   Larry  'Y'
3   David  'Y'
4   Steve  'N'

那么您可以在这样的列表达式中使用 IN 运算符吗?如果不是,如何计算我之后的列?

您可以使用 case 表达式实现预期的输出。

Select ID,
       NAME,
       CASE
        WHEN
            NAME in ('Larry', 'David')
        THEN
            'TRUE'
        ELSE
            'FALSE'
        END as IS_FAVORITE
from SOMETABLE