SQL Server 分割字符串转列

Posted TuringChang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server 分割字符串转列相关的知识,希望对你有一定的参考价值。


CREATE FUNCTION dbo.sf_DS_SplitNVarchar
(
@strValues nvarchar(4000)
)
RETURNS @tblStrList TABLE (id int identity(1,1),value nvarchar(4000))
AS
BEGIN
declare @strTmp nvarchar(4000)
declare @intPos int
select @strValues=ltrim(rtrim(@strValues))

while @strValues<>‘‘
begin
select @intPos=case when charindex(‘,‘,@strValues)=0 then len(@strValues) else charindex(‘,‘,@strValues)-1 end
select @strTmp=ltrim(rtrim(substring(@strValues,1,@intPos)))
select @strValues=ltrim(rtrim(substring(@strValues,@intPos+2,len(@strValues))))

insert into @tblStrList values(@strTmp)
end

RETURN
END

-- select value from dbo.sf_ds_splitnvarchar(‘A,B,C‘)


--【方法二】

CREATE FUNCTION dbo.sf_SplitVarchar_Sign
(
@strValues varchar(8000), --待分割字符串
@Sign char(1) --分割符
)
RETURNS @tblStrList TABLE (Zid int identity(1,1),value varchar(8000))
AS
BEGIN

declare @strTmp varchar(8000),
@intPos int

select @strValues=ltrim(rtrim(@strValues))
if right(@strValues,1) <> @Sign
select @strValues = @strValues + @Sign

if @strValues <> @Sign
begin
select @intPos = charindex(@Sign,@strValues)
while @intPos > 0
begin
select @strTmp = ltrim(rtrim(substring(@strValues,1,@intPos - 1)))
insert into @tblStrList values(@strTmp)
select @strValues = ltrim(rtrim(substring(@strValues,@intPos + 1,len(@strValues))))
select @intPos = charindex(@Sign,@strValues)
select @intPos = isnull(@intPos,0)
end
end

RETURN
END


--select value from dbo.sf_SplitVarchar_Sign(‘A,B,C‘,‘,‘)

--A
--B
--C
































































以上是关于SQL Server 分割字符串转列的主要内容,如果未能解决你的问题,请参考以下文章

SQL字符串分割转列,Sql列转字符串

Mysql数据处理/行转列/列转行/分割/拼接/数据复制汇总

SQL server字符串分割成表-表分割为字符串

SQL Server用SPLIT函数分割字符串

SQL Server自定义字符串分割函数——Split

SQL Server自定义字符串分割函数——Split