如何在DB2 12.01版本中使用具有多个值的like子句。
选择t1。*从表1 t1, (select (pattern_col) as term from help_table在t1。
Pattern_col包含n个值,如(%abc%, %xyz%, %nnn%,…)
提前感谢您的时间和帮助。
我尝试了如何在DB2中使用LIKE和in ?中提到的解决方案。当我使用sysdummy表(Oracle相当于DUAL)时,它可以工作
但是当我尝试用实际表值替换sysdummy1时,我得到以下错误。SQLCODE = -132,错误:类操作数无效
我不明白为什么sysdummy1可以工作,为什么实际的表不行。
你的方法没有错(我猜),但你所在的平台/版本可能是个问题。Db2 11.5在LUW上的示例:
create table patterns (pid int not null primary key, pattern varchar(100) not null);
insert into patterns (pid, pattern) values (1, '%abc% %xyz% %nnn%');
create table t (val varchar(100) not null primary key);
insert into t (val) values ('xyzabc xyz nnn'),('xyzabc xyz nn');
select t.*
from t
join patterns p
on t.val like p.pattern
where p.pid = 1;
VAL
----------------------------------------------------------------------------------------------------
xyzabc xyz nnn
您可以插入多个模式,如:
delete from patterns;
insert into patterns (pid, pattern)
values (1, '%abc%'), (2, '%xyz%'), (3, '%nnn%');
select t.*
from t
join patterns p
on t.val like p.pattern
where p.pid = 1;
VAL
----------------------------------------------------------------------------------------------------
xyzabc xyz nn
xyzabc xyz nnn
从你的评论看来,好像你正在使用zos。LUW和ZOS都具有您可能想要探索的正则表达式功能:
的REGEXP_LIKE