Я читаю из базы данных PostgreSQL (которую я не контролирую), которая включает целочисленный столбец, который действует как перечисление, но значения перечисления не находятся в базе данных.Можно ли индексировать в литерал массива в инструкции SELECT?
Это не мои фактические данные, но рассмотрит пример 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', если вы хотите использовать строчную константу вместо конструктора массива. – Abelisto