RT,现有某字段要用like来匹配,但由于内容不是固定的,总共要用到3次like才行,如何在1次like中就完成呢数据有类似
1.01.22
1.02.34
2.01.43
2.01.23
K10.01.23
N10.02.24
X10.01.23
X30.01.34
......现like语句如下
code like '1.01.%' or 
code like '2.01.%' or 
code like 'X30.01.%'其中后面的.01.是一样的,前面的1、2、X30是会多次出现的
能否像正则表达式那样进行多选匹配呢

解决方案 »

  1.   


    create table tb(ar varchar(10))
    insert into tb
    select 'a.c.' union all
    select 'b.c.' union all
    select 'd.c.'
    goselect *
    from tb
    where ar like '[a,b].c%'drop table tb
    /*********
    ar
    ----------
    a.c.
    b.c.
      

  2.   

    LS能实现字符串吗?比如[aa,b,ba]之类的
      

  3.   

    通配符  描述
    ---------------
    %  替代一个或多个字符
    _  仅替代一个字符
    [charlist]  字符列中的任何单一字符
    [^charlist]或者[!charlist] 不在字符列中的任何单一字符
    ------------------------------------------
    单字符可以,X30是多个字符用[]匹配不了。
      

  4.   

    用一个LIKE难,看看有没有高招
      

  5.   


    declare @t table (colname varchar(9))
    insert into @t
    select '1.01.22' union all
    select '1.02.34' union all
    select '2.01.43' union all
    select '2.01.23' union all
    select 'K10.01.23' union all
    select 'N10.02.24' union all
    select 'X10.01.23' union all
    select 'X30.01.34'declare @m table(colname varchar(10))
    insert into @m
    select '1' union all
    select '2' union all
    select 'X30'select a.* from @t a 
    left join @m b on a.colname like b.colname+'.01.%'
    where b.colname is not null
    /*
    colname
    ---------
    1.01.22
    2.01.43
    2.01.23
    X30.01.34
    */--如果你的字符串是'1,2,X30'这种
    /*按照符号分割字符串*/
    create function [dbo].[m_split](@c varchar(2000),@split varchar(2))   
      returns @t table(col varchar(200))   
      as   
        begin   
          while(charindex(@split,@c)<>0)   
            begin   
              insert @t(col) values (substring(@c,1,charindex(@split,@c)-1))   
                set @c = stuff(@c,1,charindex(@split,@c),'') 
               -- SET @c = substring(@c,charindex(' ',@c)+1,len(@c))     
            end   
          insert @t(col) values (@c)   
          return   
    end
     
    /*测试
    select * from dbo.m_split('1,2,3,4,5',',')
    */
      

  6.   

    [ab]a 可代替 [aa,ba],有规律的尽量组合在一起,稍好一点,但这里单独的b还是要单独like