使用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
运算符吗?如果不是,那么如何计算我要访问的列?
答案 0 :(得分:2)
您可以使用case
表达式来实现预期的输出。
Select ID,
NAME,
CASE
WHEN
NAME in ('Larry', 'David')
THEN
'TRUE'
ELSE
'FALSE'
END as IS_FAVORITE
from SOMETABLE