postgresql: выберите возвращаемый МАССИВ

#sql #arrays #postgresql

#sql #массивы #postgresql

Вопрос:

У меня есть таблица в виде:

 CREATE TABLE tbl_temp (id serial, friend_id int, name varchar(32));  
  

Я хотел бы запустить следующий SQL:

 PREPARE x AS SELECT {$1,friend_id} FROM tbl_temp WHERE id = ANY($2);  
EXECUTE x(33, ARRAY[1,2,3,4])
  

Я в основном ищу инструкцию, которая вернет мне массив из двух целых чисел, первое из которых будет пользовательским вводом, а второе — из столбца таблицы, подобного friend_id .

Действительно ли это возможно в PostgreSQL?

Результаты SELECT ($ 1, friend_id) ИЗ tbl_temp;

 EXECUTE x(44);
  row     
--------  
 (44,1)  
 (44,2)  
 (44,3)  
(3 rows)
  

Если я использую PQgetvalue(PGres, 0, 0) , как будет выглядеть результат: {44,45} или как (44,45) ?

Ответ №1:

Я думаю, вы хотите использовать синтаксис конструктора массива:

 SELECT ARRAY[$1, friend_id] FROM tbl_temp WHERE id = ANY($2)
  

Ответ №2:

я не уверен, что понимаю, чего вы хотите…

чтобы вернуть массив, сделайте это.

 SELECT (44, "friend_id") FROM "tbl_temp" WHERE id = ANY(ARRAY[1,2,3,4]);
  

Комментарии:

1. Спасибо за ответ. На самом деле я искал что-то вроде SELECT ARRAY[$1, friend_id] FROM tbl_temp WHERE id = ANY($2) … Получено из mu слишком короткое