powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / сделать массив из столбца таблицы plpgSQL
3 сообщений из 3, страница 1 из 1
сделать массив из столбца таблицы plpgSQL
    #39831770
heipit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, помогите пожалуйста с таким вопросом: мне нужно один столбец таблицы записать в переменную, в виде одномерного массива видимо как то с помощью array_ag(), эти значения являются типами character но все они равны либо '0' либо '1' либо null(т.е пустое поле), и мне нужно привести этот массив к булевому типу и проверить все ли значения одинаковы, видимо с помощью bool_and()
Т.Е ВОТ ТАК:
есть таблица, например с 4мя столбцами num,a,b,c (num это порядковый номер строк) и например содержимое столбца a = (0, 1, null), и нужно чтобы:
Код: plsql
1.
rec RECORD; --в эту переменную, ну или может нужно объявить какой то другой тип


Код: plsql
1.
EXECUTE 'SELECT a FROM tablename' INTO rec ; --- извлеч столбец из этой таблицы


и получилось вот так
Код: plsql
1.
rec = {0, 1, null}

- где 0 и 1 - булевые значения и потом
Код: plsql
1.
bool_and(rec)

или как то так сделать
И все тоже самое сделать со строкой.
я когда пытаюсь так сделать, со столбцом, который заполнен значениями ('0', null, null) и вывожу переменную она как будто пустая, вот так: REC = ()
...
Рейтинг: 0 / 0
сделать массив из столбца таблицы plpgSQL
    #39831800
heipit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так, я поняла, что чтобы извлеч столбец a в переменную rec нужно:
Код: plsql
1.
2.
3.
        rec RECORD;
	EXECUTE 'SELECT array_agg(a) FROM tablename' INTO rec ;		  	   
	RAISE NOTICE 'REC = %', rec;



и получается как надо: REC = ("{NULL,NULL,0}")

теперь осталось придумать как сделать из этого массива нужное выражение, которое можно подставить в bool_and() и придумать как вообще нужно подставлять
...
Рейтинг: 0 / 0
сделать массив из столбца таблицы plpgSQL
    #39831825
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heipit,
тут есть поиск, если доку читать скучно
и примеры кода для ленивых

набираем что-нть
https://www.sql.ru/forum/1313537/update-pri-pomoshhi-rekursivnogo-zaprosa?mid=21905991&hl=with values bool#21905991

находим болванку

и начинаем ваять из этого своё :
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with  geo 
(id, parent_id, name, level, hier,root, new_root) 
as
(VALUES 
(1, null, 'Планета Земля', null, null,null, null),
(2, 1, 'Континент Евразия', null, null,null, null),
(3, 1, 'Континент Северная Америка', null, null,null, null),
(4, 2, 'Европа', null, null,null, null),
(5, 4, 'Россия', null, null,null, true),
(6, 4, 'Германия', null, null,null, null),
(7, 5, 'Москва', null, null,null, null),
(8, 5, 'Санкт-Петербург', null, null,null, null),
(9, 6, 'Берлин', null, null,null, null)
)
select array_agg( new_root), bool_and( new_root), bool_or( new_root) from geo;
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / сделать массив из столбца таблицы plpgSQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]