declare @s varchar(100)
set @s='中国工商银行'
if parindex('%工%行%',@s)>0 or parindex('%工%行%',revers(@s))>0
print 'Y'
else 
print 'N'

解决方案 »

  1.   

    少了个S
    declare @s varchar(100)
    set @s='中国工商银行'
    if parindex('%工%行%',@s)>0 or parindex('%工%行%',reverse(@s))>0
    print 'Y'
    else 
    print 'N'
    OR:
    declare @s varchar(100)
    set @s='中国工商银行'
    if parindex('%工%行%',@s)>0 or parindex(reverse('%工%行%'),@s)>0
    print 'Y'
    else 
    print 'N'
      

  2.   

    parindex?找不到两个字符串都是用参数输入的,不是写死的。
      

  3.   

    declare @s varchar(100)
    set @s='中国工商银行'
    if patindex('%工%行%',@s)>0 or patindex('%工%行%',reverse(@s))>0
    print 'Y'
    else 
    print 'N'
      

  4.   

    这个虽然不是函数,给你参考一下
    declare @a varchar(100),@b varchar(100)
    declare @temp char(2)
    declare @len integer,@i integer,@m integer
    set @a='中国工商银行'
    set @b='工行'
    set @i=1
    set @m=0
    set @len=len(@b)
       while @i<=@len
       begin
             set @temp=substring(@b,@i,1)
       if  ascii(@temp)>128 and charindex(@temp,@a)>0 
         begin 
                   set @m=@m+1
           if @m=2
                     begin
       print 'YES'
       break
                     end               
                 end
       set @i=@i+1
       end
      

  5.   

    --看看这个,适应你的要求。
    declare @s varchar(100),@i int,@str varchar(2000),@s1 varchar(20)
    set @str=''
    set @i=1
    set @s1='工商行'
    set @s='中国工商银行'
     
    while @i<=len(@s1)
    begin
    set @str=@str+'%'+substring(@s1,@i,1)
    set @i=@i+1
    end
    select @str=substring(@str,2,8000)
    if patindex('%'+@str+'%',@s)>0 or patindex('%'+@str+'%',reverse(@s))>0
    print '有'
    else 
    print '无'--结果

      

  6.   

    可以把上面我写的这个放到一个存储过程里,把@s和@s1作为输入的参数就行了。
    另外设个输出参数或用return返回也可以。
    如下:
    create procedure test (@s varchar(100),@s1 varchar(20),@out varchar(10) output)
    as
    declare @i int,@str varchar(2000)
    set @str=''
    set @i=1
    --set @s1='工商行'
    --set @s='中国工商银行'
     
    while @i<=len(@s1)
    begin
    set @str=@str+'%'+substring(@s1,@i,1)
    set @i=@i+1
    end
    select @str=substring(@str,2,8000)if patindex('%'+@str+'%',@s)>0 or patindex('%'+@str+'%',reverse(@s))>0
    --print '有'
    set @out='yes'
    else 
    --print '无'
    set @out='no'
     
    ----调用
    declare @s varchar(100),@s1 varchar(20),@out varchar(10)
    set @s1='工商行'
     set @s='中国工商银行'
    exec test @s,@s1,@out outputprint @out
      

  7.   

    谢谢各位,netcoder(数据猪)是最正确的,LoveSQL(ligg) 的方法如果我把@s1='工商行'改为@s1='工222行'就错了,不信试试。
      

  8.   

    函数
    CREATE function Valid(@a varchar(100),@b varchar(100)) returns char(3)
    as
    begin
     declare @temp char(2)
     declare @len integer,@i integer,@m integer
     declare @flag bit
     set @flag=0
     set @i=1
     set @m=0
     set @len=len(@b)
       while @i<=@len
       begin
             set @temp=substring(@b,@i,1)
             if  ascii(@temp)>128 and charindex(@temp,@a)>0 
    begin 
                        set @m=@m+1
           if @m=2
     return 'YES'
                   end
     set @i=@i+1
       end
       return 'NO'
    end调用:
    select dbo.valid('中国工商银行','工行')