select substring(point,2,charindex(',',point)-1) from table where uid like '((21)%'
--示例--示例数据 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)
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
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
from table
where uid like '((21)%'
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)
(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
(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
小生的本意是在做一个复杂的应用如(((12),(34)),(56)),现在看来这种思路是不太好,所幸改还来得及,呵呵,我把point的结构改成((12)(1/1),(34)(2/1))就好了。
各位大大的写法对我很有帮助,再次感谢,结帖了。