select * from tb where id='1' and charindex('(21)',uid)>0 and charindex('(1/1)',point)>0

解决方案 »

  1.   

    select substring(point,2,charindex(',',point)-1)
    from table
    where uid like '((21)%'
      

  2.   

    --示例--示例数据
    declare @t table(id int,uid varchar(20),point varchar(20))
    insert @t select 1,'((21),(34))','((1/1),(2/1))'--查询
    select substring(point
    ,charindex('(',point,charindex('(',point)+1)
    ,charindex(')',point)
    -charindex('(',point,charindex('(',point)+1)+1)
    from @t where id=1 and charindex('(21)',uid)>0--结果:(1/1)
      

  3.   

    select substring(point,
    (case when charindex(',',uid)>charindex('(21)',uid) then 1 else charindex(',',point)+1 end),
    (case when charindex(',',uid)>charindex('(21)',uid) then charindex(',',point)-2 else 
      len(point)-charindex(',',point)-1) from [table] where id=1 and charindex('(21)',uid)>0
      

  4.   

    create table abc
    (id int,uid varchar(20),point varchar(20))insert into abc values(1,'((21),(34))','((1/1),(2/1))')select case (SELECT CHARINDEX('21', uid) from abc where id=1)
    when 3 then (select substring(point,2,charindex(',',point)-2) from abc where id=1)
    else (select substring(point,charindex(',',point)+1,len(point)-charindex(',',point)-1) from abc where id=1)
    end
    返回(1/1)select case (SELECT CHARINDEX('34', uid) from abc where id=1)
    when 3 then (select substring(point,2,charindex(',',point)-2) from abc where id=1)
    else (select substring(point,charindex(',',point)+1,len(point)-charindex(',',point)-1) from abc where id=1)
    end
    返回(2/1)drop table abc
      

  5.   

    多谢各位大大的帮助,小生这里有礼了^-^
    小生的本意是在做一个复杂的应用如(((12),(34)),(56)),现在看来这种思路是不太好,所幸改还来得及,呵呵,我把point的结构改成((12)(1/1),(34)(2/1))就好了。
    各位大大的写法对我很有帮助,再次感谢,结帖了。