有个字段有这样的值:702/3/2,5469/70/69/70……,加入输入为中间的703,5470这样的查询条件,怎么样匹配出来呢?我能做到的只能像702/3输入702,203都能匹配,702/3/2不知道怎么找出来了!

解决方案 »

  1.   

    跟,号没关系,记录是702/3/2或者是5469/70之类的,没有混在一起!
        a              value 
        1             702/3/2
        2             5469/70/69/70
        3             549/8
        .                  .
        .                  .
      

  2.   

    以下sql只对3/4位好使,而且第一个‘/’前必须多于3位;如果有其他格式的就自己改改吧!select  value 
    from tab
    where 
      value like '%'||substr(输入值,1,2)||'%' 
    and value like '%'|| decode(Length(输入值),3,substr(输入值,3,1),substr(输入值,3,2))||'%'
      

  3.   

    还有漏洞:
     value ='7070/0/3' 输入'703',也会出来!追加个条件:
    select  value 
    from tab
    where 
      value like '%'||substr(输入值,1,2)||'%' 
    and value like '%'|| decode(Length(输入值),3,substr(输入值,3,1),substr(输入值,3,2))||'%'
    and Length(substr(value ,1,Instr(value,'[',1)-1))=Length(输入值)备注:
     建议不要用SQL实现,有可能好有漏洞!