【发布时间】:2019-01-24 09:27:59
【问题描述】:
我需要像这样在 DB2 上进行选择:
SELECT *
FROM Table1
WHERE col1 LIKE col2
问题是DB2不支持列之间的LIKE,因为第二个操作符必须是静态字符串。
我需要比较这样的字符串:'AABGYD' 和 'AA_G_D' 应该匹配。 我不能使用 REGEXP_LIKE 因为这个版本不支持。 能达到和其他运营商一样的效果吗?
【问题讨论】:
我需要像这样在 DB2 上进行选择:
SELECT *
FROM Table1
WHERE col1 LIKE col2
问题是DB2不支持列之间的LIKE,因为第二个操作符必须是静态字符串。
我需要比较这样的字符串:'AABGYD' 和 'AA_G_D' 应该匹配。 我不能使用 REGEXP_LIKE 因为这个版本不支持。 能达到和其他运营商一样的效果吗?
【问题讨论】:
我手头没有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;
【讨论】: