0

假设我有以下查询:

SELECT names, color
FROM my_dataset
WHERE date='2013-07-18'

这输出:

John    0
David   1
Mary    0
Bill    0
Joe     2

问题是“颜色”列是整数。是否可以在某处输入键/特征图,以便输出可以是(0=GREEN,1=BLUE,3=RED)?

4

4 回答 4

2

这取决于您的 sql 方言。例如,您可以case在 MS SQL 中使用

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函数。

或者只是制作一个带有键/名称映射的表并将其与您的数据连接起来。

于 2013-07-20T03:15:54.780 回答
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'
于 2013-07-20T03:16:03.873 回答
1

利用decode

SELECT names, DECODE( color, 0, 'GREEN',
                             1, 'BLUE',
                             2, 'RED',
                      'UNKNOW'
                    ) as true_color
FROM my_dataset
WHERE date='2013-07-18'
于 2013-07-20T03:14:58.980 回答
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'
于 2013-07-20T03:17:39.040 回答