需求是输入一组提单号进行查询。
手动拼sql如:select * from table where column1 like  or  column1 like  or column1 like  or column1 like  这样的多个like or 
之前的实现是用
select * from table where REGEXP_LIKE(column1,'TEST201201|ABC201205...')
 这种的,但由于输入提单号过多,正则表达式限制是256字符无法满足要求。
求助各位大大,有别的实现方式吗?

解决方案 »

  1.   

    换个思路不就行了with t as
     (select regexp_substr('TEST201201|ABC201205', '[^\|]+', 1, level) str
        from dual
      connect by level <= regexp_count('TEST201201|ABC201205', '\|') + 1)
    select t1.* from t1, t where REGEXP_LIKE(t1.column1, t.str);
      

  2.   

    会有重复的数据,用DISTINCT后数据才变正常的。
      

  3.   


    那就是你输入单号有包容关系了,那就加个distinct吧,反正需求实现了就行。