Вы можете получить общие значения, разделив столбец id
и используя агрегацию:
with t as (
select v.*
from (values ('5-6'), ('6-5'), ('7-5')) v(id)
)
select s.value
from t cross apply
string_split(t.id, '-') s
group by s.value
having count(*) = (select count(*) from t);
Здесь - это db <> скрипка.
Iне вижу смысла добавлять это в виде столбца в каждую строку, но вы можете использовать join
для этой цели.
Тогда. Как только вы поймете, как это сделать, исправит вашу модель данных . Вы должны хранить списки в отдельной таблице соединений / ассоциаций.
Для справки, вот оригинальный ответ для Postgres.
with t as (
select v.*
from (values ('5-6'), ('6-5'), ('7-5')) v(id)
)
select r.id
from t cross join lateral
regexp_split_to_table(t.id, '-') r(id)
group by r.id
having count(*) = (select count(*) from t);