有 A 表中有字段 Tele    Tele 中的数据为 'ab,abc,qwe,123'我想通过 一个参数 如;ab  模糊查询 Tele 将其查询结果打印 求救。。

解决方案 »

  1.   

    select * from A
    where find_in_set('ab',tele)
      

  2.   

    find_in_set 我的sql 2005 不支持这个函数吧 还有sql 2000 还支持呀
      

  3.   

    select * from A
    where charindex(','+'ab'+',',','+tele+',')>0
    --or
    select * from A
    where ','+tele+',' like '%,ab,%'
      

  4.   

    select * From A where charindex(',' + 'ab' + ',' , ',' + Tele + ',') > 0select * From A where ',' + Tele + ',' like '%,' + 'ab' + ',%'
      

  5.   


    你这个只是将还有‘ab’的数据都打印出来了  我要的结果是‘ab,abc’ 
      

  6.   

    那如果是 cab 也打印吗?
    如果是,就需要分解后再判断了,参考:
    /*
    功能:实现split功能的函数
    */create function dbo.fn_split 
    (
    @inputstr varchar(8000), 
    @seprator varchar(10)
    )
    returns @temp table (a varchar(200))
    as begin
    declare @i intset @inputstr = rtrim(ltrim(@inputstr))
    set @i = charindex(@seprator, @inputstr)while @i >= 1
    begin
    insert @temp values(left(@inputstr, @i - 1))set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i)
    set @i = charindex(@seprator, @inputstr)
    endif @inputstr <> '\'
    insert @temp values(@inputstr)return 
    end
    go--调用declare @s varchar(1000)set @s='1,2,3,4,5,6,7,8,55'select * from dbo.fn_split(@s,',')drop function dbo.fn_split /*
    a                     
    ----------------------
    1
    2
    3
    4
    5
    6
    7
    8
    55(所影响的行数为 9 行)
    */