select * from tab a where (case when a.cola like '%keyx%' then 1 when t.cola like '%keyy%' then 1 when t.cola like '%keyz%' then 1 else 0 end)=1 or (case when a.colb like '%keyx%' then 1 when t.colb like '%keyy%' then 1 when t.colb like '%keyz%' then 1 else 0 end)=1 or (case when a.colc like '%keyx%' then 1 when t.colc like '%keyy%' then 1 when t.colc like '%keyz%' then 1 else 0 end)=1
能不能用GROUP BY,问题没看怎么明白
select * from table a where instr(a.cola||'-'||a.colb||'-'||a.colc,a.keyx)<>0 or instr(a.cola||'-'||a.colb||'-'||a.colc,a.keyy)<>0 or instr(a.cola||'-'||a.colb||'-'||a.colc,a.keyz)<>0 中间的短横线最好是替换成 不可能出现的字符,
(case when a.cola like '%keyx%' then 1 when t.cola like '%keyy%' then 1 when t.cola like '%keyz%' then 1 else 0 end)=1
or
(case when a.colb like '%keyx%' then 1 when t.colb like '%keyy%' then 1 when t.colb like '%keyz%' then 1 else 0 end)=1
or
(case when a.colc like '%keyx%' then 1 when t.colc like '%keyy%' then 1 when t.colc like '%keyz%' then 1 else 0 end)=1
where instr(a.cola||'-'||a.colb||'-'||a.colc,a.keyx)<>0
or instr(a.cola||'-'||a.colb||'-'||a.colc,a.keyy)<>0
or instr(a.cola||'-'||a.colb||'-'||a.colc,a.keyz)<>0
中间的短横线最好是替换成 不可能出现的字符,
regexp_instr(cola||colb||colc,'[keyx|keyy|keyz]')>0