【叶子函数分享九】根据字符分割字符串的三种写法
2011-04-12 09:15
615 查看
go
--创建函数(第一版)
create function [dbo].[m_split](@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
--下面两种是在论坛看到高手们发的
go
--创建函数(第二版)(fredrickhu(小F))
create function [dbo].[f_split](@s varchar(8000), @split varchar(10) )
returns table
as
return
(select substring(@s,number,charindex(@split,@s+@split,number)-number)as col
from master..spt_values
where type='p' and number<=len(@s+'a')
and charindex(@split,@split+@s,number)=number)
go
--创建函数(第三版)(dawugui(爱新觉罗.毓华))
create function [dbo].[d_split] (@inputstr varchar(8000),@seprator varchar(10))
returns @temp table (a varchar(200))
as
begin
declare @i int
set @inputstr = rtrim(ltrim(@inputstr))
set @i = charindex(@seprator, @inputstr)
while @i >= 1
begin
insert @temp values(left(@inputstr, @i - 1))
set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i)
set @i = charindex(@seprator, @inputstr)
end
if @inputstr <> '/'
insert @temp values(@inputstr)
return
end
--测试示例
declare @sql varchar(20)
set @sql='A,B,C,D,E'
select * from dbo.m_split(@sql,',')
select * from dbo.f_split(@sql,',')
select * from dbo.d_split(@sql,',')
--运行结果(结果是相同的)
/*
col
---------
A
B
C
D
E
*/
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/maco_wang/archive/2011/03/18/6260225.aspx
--创建函数(第一版)
create function [dbo].[m_split](@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
--下面两种是在论坛看到高手们发的
go
--创建函数(第二版)(fredrickhu(小F))
create function [dbo].[f_split](@s varchar(8000), @split varchar(10) )
returns table
as
return
(select substring(@s,number,charindex(@split,@s+@split,number)-number)as col
from master..spt_values
where type='p' and number<=len(@s+'a')
and charindex(@split,@split+@s,number)=number)
go
--创建函数(第三版)(dawugui(爱新觉罗.毓华))
create function [dbo].[d_split] (@inputstr varchar(8000),@seprator varchar(10))
returns @temp table (a varchar(200))
as
begin
declare @i int
set @inputstr = rtrim(ltrim(@inputstr))
set @i = charindex(@seprator, @inputstr)
while @i >= 1
begin
insert @temp values(left(@inputstr, @i - 1))
set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i)
set @i = charindex(@seprator, @inputstr)
end
if @inputstr <> '/'
insert @temp values(@inputstr)
return
end
--测试示例
declare @sql varchar(20)
set @sql='A,B,C,D,E'
select * from dbo.m_split(@sql,',')
select * from dbo.f_split(@sql,',')
select * from dbo.d_split(@sql,',')
--运行结果(结果是相同的)
/*
col
---------
A
B
C
D
E
*/
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/maco_wang/archive/2011/03/18/6260225.aspx
相关文章推荐
- 【叶子函数分享九】根据字符分割字符串的三种写法
- 根据字符分割字符串的三种写法
- sqlserver中根据字符分割字符串的最好的写法分享
- SQL根据字符分割字符串的三种写法
- 根据字符分割字符串的三种写法
- sqlserver中根据字符分割字符串的最好的写法分享
- 【SQL分享】根据字符分割字符串的最好的写法【经典】
- 【叶子函数分享十六】多个数据项的字符串取指定位置字符
- 可以将一个字符串左旋K个字符(0<=k<=字符串长度)的三种函数写法【C语言】
- [MSSQL]字符分割字符串的三种写法
- [MSSQL]字符分割字符串的三种写法
- 【叶子函数分享二十五】从第一个汉字开始分割字符串
- 【叶子函数分享二十五】从第一个汉字开始分割字符串
- 【叶子函数分享二十六】过滤掉字符串中重复的字符
- Split()函数,不传入字符,传入字符串分割字符串
- 【叶子函数分享三十四】字符串转成16进制函数
- oracle根据分隔符将字符串分割成数组函数
- asp.net字符串分割函数使用方法分享
- 自己实现的一个字符串分割截取函数,以及查找指定字符
- 【叶子函数分享三十六】SQL2000/2005字符串拆分为列表通用函数