Динамическая инструкция Case в postgres - PullRequest
0 голосов
/ 30 мая 2018

У меня есть два массива.Оба массива вычисляются из функций, поэтому оба массива являются динамическими, но длина обоих массивов будет одинаковой.

a1= ARRAY[1,2,3];
a2= ARRAY[10,20,30];

Теперь я хочу обновить свою таблицу примерно так:

UPDATE TABLE SET data= CASE 
     data=a1[1] then a2[1]
     data=a1[2] then a2[2]
     data=a1[3] then a2[3]END
where id=1;

Я пытался сДобавление цикла внутри CASE, но он не работает.

1 Ответ

0 голосов
/ 30 мая 2018

Вы можете использовать array_position, чтобы найти соответствующий индекс в массиве 1, и запросить массив 2, используя этот индекс:

UPDATE TABLE 
SET data = a2[array_position(a1, data)]
WHERE id = 1;

http://rextester.com/CBJ37276

...