Сравнить две строки-массива в sql

Сравнить две строки-массива в sql

/stackoverflow

Есть две строки: word1 и word2

Внутри них массив неких данных связанных между собой например:

CREATE TABLE logs (
    word1 string,    
    word2 string
    );

INSERT INTO logs (Word1, Word2) 
VALUES ('['location','title','value']', ['Москва','заголовок1','34']);

INSERT INTO logs (Word1, Word2) 
VALUES ('['title','value','location']', ['Заголовок999','574584','Тверь']);

То есть каждый по порядку элемент в первой строке по своему номеру в массиве привязан к значению в другом массиве второй строки.

Вопрос: как мне определить номер в массиве значения например location в первой строке, и соотнести его с таким же порядковым номером в массиве из второй строки, при том что порядок слов и их значение в массиве может меняться?

На выходе если брать поле location исходя из примера выше нужно получить поле location с данными:

Москва
Тверь

И т.д.



CREATE TABLE logs (
    word1 VARCHAR[3],    
    word2 VARCHAR[3]
    );

INSERT INTO logs (Word1, Word2) VALUES 
('{"location","title","value"}', '{"Москва","заголовок1","34"}'),
('{"title","value","location"}', '{"Заголовок999","574584","Тверь"}');

SELECT *, 
       array_position(Word1, 'location') location_position,
       Word2[array_position(Word1, 'location')] location_value
FROM logs;




Report Page