有这样的数据
字段1 字段2 2,4,23 3,6,345 23,56,4 3,3,67
取数据的是 查询 字段1中 条件是 4 那么在字段2 在取的是6与 67 结果如下 ============ 4 6 4 67 ------------------------------------------------------------------------------- --处理示例 --测试数据 create table tb(字段1 varchar(10),字段2 varchar(10)) insert tb select ’2,4,23’ ,’3,6,345’ union all select ’23,56,4’,’3,3,67’ go --写个自定义函数来处理 create function f_value( @a varchar(10), @b varchar(10), @c varchar(10) )returns varchar(10) as begin declare @i int,@pos int select @a=left(@a,charindex(’,’+@c+’,’,’,’+@a+’,’)-1) ,@pos=len(@a)-len(replace(@a,’,’,’’))+1 ,@i=charindex(’,’,@b) while @i>0 and @pos>1 select @b=substring(@b,@i+1,8000) ,@i=charindex(’,’,@b) ,@pos=@pos-1 return(case @pos when 1 then case when @i>0 then left(@b,@i-1) else @b end else ’’ end) end go --查询 declare @a varchar(10) set @a=’23’ --查询参数 --查询语句 select A=@a,B=dbo.f_value(字段1,字段2,@a) from tb go --删除测试 drop table tb drop function f_value /*--测试结果 A B ---------- ---------- 23 345 23 3 (所影响的行数为 2 行) --*/
|