你如何选择然后输出一个REPLACED字?

时间:2013-07-20 03:10:08

标签: sql

假设我有查询:

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 =红色)而不是?

4 个答案:

答案 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'