我正在从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
您可以使用ARRAY关键字构造数组:
SELECT (ARRAY['fr', 'so', 'ju', 'se'])[class] FROM students
在PostgreSQL中,数组下标以开头1
,而不是以开头0
,因此,如果类枚举列0
用作其值之一,则可能需要对其进行移位以获取所需的内容。例如,如果的值为class
0、1、2和3,则可以将1加到class
:
SELECT (ARRAY['fr', 'so', 'ju', 'se'])[class + 1] FROM students
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句