--declare @str varchar(max)
--declare @i int
--set @str='123,456,789'
--set @i=charindex(',',@str)
--print @i
--print ''''+left(@str,@i-1)+''''
--分隔字符串(例如:'123,456,789')
--返回(例如:'123','456','789')
create function [dbo].[Fn_Split]
(
@str varchar(8000), --要分拆的字符串
@spli varchar(10) --字符串分隔符(在此设置分隔符长度为或其它)
)
returns varchar(8000)
as
begin
declare @returnstr varchar(8000)
declare @i int
declare @splen int
set @str=rtrim(ltrim(@str))--去除原字符串的左右空格
set @returnstr=''
if @str<>''
begin
set @str=@str+','
set @splen=len(@spli) --获取原字符串字符个数
set @i=charindex(@spli,@str) --得到分隔符第一次出现的位置
while @i > 0
begin
if @returnstr<>'' set @returnstr=@returnstr+','+(''''+left(@str,@i-1)+'''')
else set @returnstr=(''''+left(@str,@i-1)+'''')
set @str=substring(@str,@i+@splen,8000)
set @i=charindex(@spli,@str)
end
end
return @returnstr
end
--print dbo.Fn_Split('123,456,789',',')
--结果 '123','456','789'