SQLSERVER 分割字符串函数

原文地址:http://www.jb51.net/article/28921.htm

首先创建一个表值函数:

 

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
/* 
by kudychen 2011-9-28 
*/ 
CREATE function [dbo].[SplitString] 

@Input nvarchar(max), --input string to be separated 
@Separator nvarchar(max)=','--a string that delimit the substrings in the input string 
@RemoveEmptyEntries bit=1 --the return value does not include array elements that contain an empty string 

returns @TABLE table 

[Id] int identity(1,1), 
[Value] nvarchar(max

as 
begin 
declare @Index int@Entry nvarchar(max
set @Index = charindex(@Separator,@Input
while (@Index>0
begin 
set @Entry=ltrim(rtrim(substring(@Input1@Index-1))) 
if (@RemoveEmptyEntries=0or (@RemoveEmptyEntries=1 and @Entry<>''
begin 
insert into @TABLE([Value]Values(@Entry
end 
set @Input = substring(@Input@Index+datalength(@Separator)/2len(@Input)) 
set @Index = charindex(@Separator@Input
end 
set @Entry=ltrim(rtrim(@Input)) 
if (@RemoveEmptyEntries=0or (@RemoveEmptyEntries=1 and @Entry<>''
begin 
insert into @TABLE([Value]Values(@Entry
end 
return 
end

调用示例: 

declare @str1 varchar(max), @str2 varchar(max), @str3 varchar(max
set @str1 = '1,2,3' 
set @str2 = '1###2###3' 
set @str3 = '1###2###3###' 
select [Value] from [dbo].[SplitString](@str1','1
select [Value] from [dbo].[SplitString](@str2'###'1
select [Value] from [dbo].[SplitString](@str3'###'0

 

posted @ 2012-07-14 09:53  Merray  Views(356)  Comments(0Edit  收藏  举报