Сравнить две строки-массива в 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;