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

时间:2020-05-02 05:57:16

标签: sql oracle oracle11g calculated-columns

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

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

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

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没有布尔值的概念,我应该使用“数字字符串”之类的东西,所以这也很好...

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

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

1 个答案:

答案 0 :(得分:2)

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

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