假设我有查询:
SELECT names, color
FROM my_dataset
WHERE date='2013-07-18'
这输出:
John 0
David 1
Mary 0
Bill 0
Joe 2
问题是“颜色”列是Intergers。是否可以在某处输入键/特征映射,以便输出(0 =绿色,1 =蓝色,3 =红色)而不是?
答案 0 :(得分:2)
这取决于你的sql方言。例如,您可以在MS SQL中使用case
select names,
case color
when 0 then 'green'
when 1 then 'blue'
when 2 then 'red'
else null
end as color
from my_dataset
在Oracle中,有一个decode
函数。
或者只需创建一个包含键/名称映射的表,并将其与您的数据连接。
答案 1 :(得分:2)
您可以使用CASE
:
SELECT
names,
CASE color
WHEN 0 then 'Green'
WHEN 1 then 'Blue'
WHEN 2 then 'Red'
ELSE '???' END
As
Color
FROM
my_dataset
WHERE
date='2013-07-18'
答案 2 :(得分:1)
使用decode
SELECT names, DECODE( color, 0, 'GREEN',
1, 'BLUE',
2, 'RED',
'UNKNOW'
) as true_color
FROM my_dataset
WHERE date='2013-07-18'
答案 3 :(得分:0)
您可以通过为数字提供别名
来使用When case
子句
SELECT names,(CASE color
WHEN 0 THEN 'GREEN'
WHEN 1 THEN 'BLUE'
WHEN 3 THEN 'RED'
ELSE '' END
) AS color
FROM my_dataset WHERE date='2013-07-18'