【发布时间】:2020-05-02 05:57:16
【问题描述】:
使用 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 没有布尔值的概念,我应该使用“数字字符串”或类似的东西,所以这也很好......
ID NAME IS_FAVORITE
----------------------
1 Tom 'N'
2 Larry 'Y'
3 David 'Y'
4 Steve 'N'
那么你能在这样的列表达式中使用IN 运算符吗?如果没有,如何计算我所追求的列?
【问题讨论】:
-
IN是一个条件,而不是一个函数。 (它不是一个函数,因为 Oracle 没有 Boolean 数据类型;但它确实有条件。您只是不能返回条件的 (Boolean) 值以供进一步处理。) -
是的,通过下面的答案发现了这一点,这就像一个冠军!
标签: sql oracle oracle11g calculated-columns