Получение значения из массива в операторе SELECT - PullRequest
2 голосов
/ 05 марта 2010

Можно ли определить массив текстовых полей (или любой тип данных) и выбрать из него значение, все в пределах одного оператора? Например:

SELECT ARRAY['First', 'Second', 'Third'][mytable.state] as interpreted_state WHERE mytable.id = 1;

Ответы [ 4 ]

3 голосов
/ 05 марта 2010

Вы можете сделать это с помощью оператора SQL "CASE", нет?

SELECT CASE mytable.state 
  WHEN 0 THEN 'First'
  WHEN 1 THEN 'Second'
  WHEN 2 THEN 'Third'
   END 
  FROM mytable
 WHERE mytable.id = 1
1 голос
/ 05 марта 2010
SELECT * FROM mytable.id WHERE columns IN ("1","2","3");

если я правильно понял, что вы имели в виду ..

0 голосов
/ 06 марта 2010

Ты рядом, тебе просто нужно несколько паренов.

SELECT (array['one','two','three'])[state]
FROM mytable
WHERE id = 1;

Но, как уже говорилось, оператор CASE является стандартным и переносимым методом.

0 голосов
/ 05 марта 2010

Это действительно глупый способ сделать это. Иметь таблицу поиска и использовать соединение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...