【发布时间】:2017-06-28 01:08:49
【问题描述】:
我正在从一个 PostgreSQL 数据库(我无法控制)中读取数据,该数据库包含一个类似于枚举的整数列,但枚举值不在数据库中。
这不是我的实际数据,但考虑一个示例students 表:
id | name | class
==================
1 | Adam | 1
2 | Bruce | 1
3 | Chris | 3
4 | Dave | 4
当SELECT从此表中,将class列转换为更人性化的东西是很常见的:
SELECT
id,
name,
CASE class
WHEN 1 THEN 'Freshman'
WHEN 2 THEN 'Sophomore'
WHEN 3 THEN 'Junior'
WHEN 4 THEN 'Senior'
ELSE 'Unknown'
END
FROM students
有没有更好的方法来写这个?我尝试构建一个文字数组并使用该列对其进行索引,但如果可能的话,我还没有弄清楚语法。
这些不起作用:
SELECT {"fr", "so", "ju", "se"}[class] FROM students
SELECT '{"fr", "so", "ju", "se"}'[class] FROM students
【问题讨论】:
-
SELECT ('{fr,so,ju,se}'::text[])[class] FROM students如果你想使用字符串常量而不是数组构造函数。
标签: arrays postgresql select