#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 слишком короткое