可以在列表达式中使用 'In' 运算符吗?
Can you use an 'In' operator in a column expression?
使用 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 没有布尔值的概念,我应该使用 'numeric strings' 或类似的东西,所以这也很好...
ID NAME IS_FAVORITE
----------------------
1 Tom 'N'
2 Larry 'Y'
3 David 'Y'
4 Steve 'N'
那么您可以在这样的列表达式中使用 IN
运算符吗?如果不是,如何计算我之后的列?
您可以使用 case
表达式实现预期的输出。
Select ID,
NAME,
CASE
WHEN
NAME in ('Larry', 'David')
THEN
'TRUE'
ELSE
'FALSE'
END as IS_FAVORITE
from SOMETABLE
使用 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 没有布尔值的概念,我应该使用 'numeric strings' 或类似的东西,所以这也很好...
ID NAME IS_FAVORITE
----------------------
1 Tom 'N'
2 Larry 'Y'
3 David 'Y'
4 Steve 'N'
那么您可以在这样的列表达式中使用 IN
运算符吗?如果不是,如何计算我之后的列?
您可以使用 case
表达式实现预期的输出。
Select ID,
NAME,
CASE
WHEN
NAME in ('Larry', 'David')
THEN
'TRUE'
ELSE
'FALSE'
END as IS_FAVORITE
from SOMETABLE