可以在列表达式中使用 "In "操作符吗?

问题描述 投票:0回答:1

使用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没有booleans的概念,我应该使用 "数字字符串 "或类似的东西,所以这也是好的......。

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

那么你可以使用 IN 在这样的列表达式中使用操作符?如果没有,如何计算我想要的列?

sql oracle plsql oracle11g calculated-columns
1个回答
2
投票

你可以用以下方法实现你的预期输出 case 表达方式:

Select ID,
       NAME,
       CASE
        WHEN
            NAME in ('Larry', 'David')
        THEN
            'TRUE'
        ELSE
            'FALSE'
        END as IS_FAVORITE
from SOMETABLE
© www.soinside.com 2019 - 2024. All rights reserved.