Можете ли вы использовать оператор «In» в выражении столбца? - PullRequest
0 голосов
/ 02 мая 2020

Использование 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 не имеет понятия логических выражений, и я должен использовать 'Numberri c Strings "или что-то в этом роде, так что это тоже хорошо ...

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

Так что вы можете использовать IN оператор в выражении столбца, как это? Если нет, то как вычислить столбец, за которым я иду?

1 Ответ

2 голосов
/ 02 мая 2020

Вы можете получить ожидаемый результат, используя выражение case.

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