中海兄弟,用charindex的话,那SQL 就好长了。能不能从后面一个 | 开始查找?

解决方案 »

  1.   

    从后面找,用reverse翻转字符串,不过那样更慢.
      

  2.   

    create table t(a varchar(20),b int)
    insert into t select '001',1
    union select '002',2
    union select '003',3--动态sql测试
    declare @s varchar(40),@sql varchar(400)
    set @s = '001|003'
    set @sql='select * from t where charindex(a,'''+@s+''')>0'
    print @sql
    exec (@sql)--结果
    a                    b           
    -------------------- ----------- 
    001                  1
    002                  2--存储过程测试
    create proc p_t(@s varchar(40))
    as
    begin
      declare @sql varchar(400)
      set @sql='select * from t where charindex(a,'''+@s+''')>0'
      exec (@sql)  
    end
    exec p_t '001|003'
    --结果
    a                    b           
    -------------------- ----------- 
    001                  1
    002                  2(所影响的行数为 2 行)