DB2 10 для z / OS, где LIKE сравнивает столбцы с подстановочным символом '_' - PullRequest
0 голосов
/ 24 января 2019

Мне нужно сделать выбор в DB2 следующим образом:

SELECT * 
FROM Table1
WHERE col1 LIKE col2

Проблема в том, что DB2 не поддерживает LIKE между столбцами, поскольку второй оператор должен быть статической строкой.

Мне нужно сравнить строки вроде этих: 'AABGYD' и 'AA_G_D', которые должны совпадать. Я не могу использовать REGEXP_LIKE, потому что не поддерживается в этой версии. Можно ли добиться чего-то похожего с другими операторами?

1 Ответ

0 голосов
/ 24 января 2019

У меня нет zDB2 для тестирования, но похоже, что он поддерживает функцию fn: match .Работает ли у вас следующее?

with t (col1, col2) as (
          select 'AABGYD', 'AA.G.D' from sysibm.sysdummy1
union all select 'AAGYD', 'AA.G.D' from sysibm.sysdummy1
)
select *
from t
where xmlcast(xmlquery('fn:matches($s, $p)' passing col1 as "s", col2 as "p") as int)=1;
...