У меня есть некоторые интересные данные, я пытаюсь выполнить запрос, однако не могу получить правильный синтаксис.У меня есть временная таблица (temp_id
), которую я заполнил значениями id
, которые мне нужны.В этом примере это только два идентификатора.
CREATE TEMPORARY TABLE temp_id (id bigint PRIMARY KEY);
INSERT INTO temp_id (id) VALUES ( 1 ), ( 2 );
У меня есть другая таблица в производстве (назовем ее foo
), которая содержит кратные эти идентификаторы в одной ячейке.Столбец ids
выглядит следующим образом (ниже) с идентификаторами в виде одной строки, разделенной "|"
ids
-----------
1|9|3|4|5
6|5|6|9|7
NULL
2|5|6|9|7
9|11|12|99
Я хочу оценить каждую ячейку в foo.ids
и посмотреть, есть ли какая-либо из ids
в соответствии с теми, что в моей таблице temp_id
.
Ожидаемый результат
ids |does_match
-----------------------
1|9|3|4|5 |true
6|5|6|9|7 |false
NULL |false
2|5|6|9|7 |true
9|11|12|99 |false
Пока я придумал это, но, похоже, ничего не могу вернуть.Вместо того, чтобы пытаться создать новый столбец does_match
, я попытался выполнить фильтрацию внутри оператора WHERE
.Однако проблема в том, что я не могу понять, как вычислить все значения id
в моей временной таблице для строкового блоба, заполненного ids
в foo
.
SELECT
ids,
FROM foo
WHERE ids = ANY(SELECT LISTAGG(id, ' | ') FROM temp_ids)
Любые предложения будутполезно.
ура,