powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / избавиться от нескольких select при jsonb
4 сообщений из 4, страница 1 из 1
избавиться от нескольких select при jsonb
    #38933188
crause
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите с запросом.
как заменить 5 селектов на один?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DECLARE
RESULT jsonb;
p1 bigint;
p2 boolean;
p3 text;
p4 text;
p5 text;
BEGIN
 IF $1 IS NOT NULL THEN 
  SELECT value into p1 FROM jsonb_each_text($1) where key = 'par1';
  SELECT value into p2 FROM jsonb_each_text($1) where key = 'par2';
  SELECT value into p3 FROM jsonb_each_text($1) where key = 'par3';
  SELECT value into p4 FROM jsonb_each_text($1) where key = 'par4';
  SELECT value into p5 FROM jsonb_each_text($1) where key = 'par5';
...
Рейтинг: 0 / 0
избавиться от нескольких select при jsonb
    #38933211
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crauseкак заменить 5 селектов на один?а зачем атрибуты "объекта" растаскивать на отдельные переменные, да еще через селект.
...
Рейтинг: 0 / 0
избавиться от нескольких select при jsonb
    #38933264
crause
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p2.crauseкак заменить 5 селектов на один?а зачем атрибуты "объекта" растаскивать на отдельные переменные, да еще через селект.

для читабельности кода в дальнейшем.

как можно по другому? значения эти идут в update и в insert
...
Рейтинг: 0 / 0
избавиться от нескольких select при jsonb
    #38933291
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crauseдля читабельности кода в дальнейшем.читаблядство субъективный критерий. Разыменование объекта при дальнейшей модификации исходного json потребует копирования изменений по декларациям и переприсваиваниям переменных и может привести к труднодиагностируемым ошибкам.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
do language plpgsql $anon$
declare
   j jsonb := '{"a":"xxx", "b":123}'::jsonb;
   a text;
   b integer;   
begin
   --синтаксически без селекта
   a := j->>'a';
   b := j->'b';
   raise notice 'a=% b=%', a, b;
   --одним селектом
   select * into a, b
      from jsonb_to_record(j) as t (a text, b integer);
   raise notice 'a=% b=%', a, b;
end;
$anon$

ЗАМЕЧАНИЕ:  a=xxx b=123
ЗАМЕЧАНИЕ:  a=xxx b=123
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / избавиться от нескольких select при jsonb
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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