列转行,先创建函数,用于拆分类似逗号分隔字符串,也可以指定其他的分隔符
if OBJECT_ID('Fn_SplitString','TF') is not null drop function dbo.Fn_SplitString
go
create function Fn_SplitString(@String nvarchar(max), --待拆分字符串
@Separator nvarchar(10) ) --分隔字符串
returns @Result table (Code nvarchar(100))
as
begin
--如果传入的字符串长度为0,直接返回空表
if len(@Separator)=0 return
--循环处理
while len(@String)>0
begin
--如果已经没有分隔符了,退出循环
if CHARINDEX(@Separator,@String)=0 break
--如果字符串是以分隔符开始,不处理,并去掉最开始的分隔符
if CHARINDEX(@Separator,@String)>1
begin
insert into @Result(Code)
select left(@String,CHARINDEX(@Separator,@String)-1)
end
set @String=STUFF(@String,1,CHARINDEX(@