当前位置: 代码迷 >> Oracle管理 >> 求1解决like多条件的sql
  详细解决方案

求1解决like多条件的sql

热度:242   发布时间:2016-04-24 04:05:19.0
求一解决like多条件的sql
with t1 as
 (select 'A' column1, '1' column2
    from dual
  union
  select 'a' column1, '1-1' column2
    from dual
  union
  select 'aa' column1, '1-1-1' column2
    from dual
  union
  select 'B' column1, '2' column2
    from dual
  union
  select 'b' column1, '2-1' column2
    from dual
  union
  select 'bb' column1, '2-1-1' column2 from dual)

select *
  from t1
 where column2 like (select column2 from t1 where column1 = 'a') || '%'
上面的查询中查询了column1 作为条件的column2 开头的对应数据
现在希望在查询column1 的时候可以支持多个条件,也就是说,希望查询column1 的时候可以达到in的效果,
但是如果盲目的改成in条件(select *
  from t1
 where column2 like (select column2 from t1 where column1 in ('a','b')) || '%')就会提示返回多列数据,
说以希望帮忙改写上面的sql达到column1 可以多条件的效果
------解决思路----------------------
with t1 as
 (select 'A' column1, '1' column2
    from dual
  union
  select 'a' column1, '1-1' column2
    from dual
  union
  select 'aa' column1, '1-1-1' column2
    from dual
  union
  select 'B' column1, '2' column2
    from dual
  union
  select 'b' column1, '2-1' column2
    from dual
  union
  select 'bb' column1, '2-1-1' column2 from dual
  union all
  select 'c','0' from dual)

select a.* from t1 a,(select column2 c2 from t1 where column1 in ('a','b')) b
where instr(a.column2,b.c2) > 0;
  相关解决方案