字符串分拆查询

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

原帖地址:http://community.csdn.net/Expert/topic/3230/3230422.xml?temp=.7884485

有这样的数据

字段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 行)

--*/

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航