DB2 10 for z / OS,其中LIKE比较带有通配符'_'的列

时间:2019-01-24 09:27:59

标签: regex db2 sql-like

我需要像这样在DB2上进行选择:

SELECT * 
FROM Table1
WHERE col1 LIKE col2

问题在于DB2不支持列之间的LIKE,因为第二个运算符必须是静态字符串。

我需要比较类似的字符串:'AABGYD'和'AA_G_D'应该匹配。 我无法使用REGEXP_LIKE,因为此版本不支持。 可以和其他运营商达成类似的目标吗?

1 个答案:

答案 0 :(得分:1)

我手头没有zDB2可以测试,但似乎它支持fn:matches函数。 以下内容对您有用吗?

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;