在程序设计中,经常会遇到通过一个编辑框让用户输入一些类似商品编号或者其他编号的情况,如何将一连串的字符分割成单独的行呢?
如输入'010001,020002,030003,040004,050005'或‘'010001/020002/030003/040004/050005'’需要转换成
这种情况可以编制一个表值函数,直接调用即可。
ALTER function [dbo].[fun_dh] (@c varchar(2000),@split varchar(2))
returns @t table(col varchar(200))
as
begin
while(charindex(@split,@c)<>0)
begin
insert @t(col) values (substring(@c,1,charindex(@split,@c)-1))
set @c = stuff(@c,1,charindex(@split,@c),'')
end
insert @t(col) values (@c)
return
end
调用:
/*测试
declare @spbh varchar(500)
--set @spbh='010001,020002,030003,040004,050005'
set @spbh='010001/020002/030003/040004/050005'
select col as spbh from dbo.fun_dh(@spbh,'/')
*/