Попробуйте следующее:
Идея состоит в том, чтобы токенизировать каждую строку в обоих столбцах, предполагая, что слова разделены одним или несколькими пробелами. Мы объединяем оба списка слов в предикат exists
, чтобы проверить, есть ли общее слово в обоих.
with t(c1, c2) as
(
values
('2', '235')
, ('street', '1 street')
, ('tomm', 'angel')
, ('25', '25 35')
, ('winter season', 'summer season')
)
select c1, c2
from t
where exists
(
select 1
from xmltable
(
'for $id in tokenize($s, "\s+") return <i>{string($id)}</i>' passing t.c1 as "s"
columns tok varchar(100) path '.'
) t1
join xmltable
(
'for $id in tokenize($s, "\s+") return <i>{string($id)}</i>' passing t.c2 as "s"
columns tok varchar(100) path '.'
) t2 on t1.tok = t2.tok
);
Результат:
|C1 |C2 |
|---------------|---------------|
|street |1 street |
|25 |25 35 |
|winter season |summer season |