SQLServer字符串分隔函数
2013-10-30 11:08
316 查看
一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。
CREATE
function Get_StrArrayLength
(
@str varchar(1024),
--要分割的字符串
@split
varchar(10)
--分隔符号
)
returns
int
as
begin
declare
@location int
declare
@start int
declare
@length int
set @str=ltrim(rtrim(@str))
set @location=charindex(@split,@str)
set @length=1
while
@location<>0
begin
set @start=@location+1
set @location=charindex(@split,@str,@start)
set @length=@length+1
end
return
@length
end
调用示例:select dbo.Get_StrArrayLength('78,1,2,3',',')
返回值:4
二、按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便
CREATE
function Get_StrArrayStrOfIndex
(
@str varchar(1024),
--要分割的字符串
@split
varchar(10),
--分隔符号
@index<
4000
/span>
int
--取第几个元素
)
returns
varchar(1024)
as
begin
declare
@location int
declare
@start int
declare
@next int
declare
@seed int
set @str=ltrim(rtrim(@str))
set @start=1
set @next=1
set @seed=len(@split)
set @location=charindex(@split,@str)
while
@location<>0
and
@index>@next
begin
set @start=@location+@seed
set @location=charindex(@split,@str,@start)
set @next=@next+1
end
if @location
=0
select
@location =len(@str)+1
--这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。
return
substring(@str,@start,@location-@start)
end
调用示例:select dbo.Get_StrArrayStrOfIndex('8,9,4',',',2)
返回值:9
三、结合上边两个函数,象数组一样遍历字符串中的元素
create
function f_splitstr(@SourceSql
varchar(8000),@StrSeprate
varchar(100))
returns
@temp table(F1
varchar(100))
as
begin
declare
@ch as
varchar(100)
set
@SourceSql=@SourceSql+@StrSeprate
while(@SourceSql<>'')
begin
set
@ch=left(@SourceSql,charindex(',',@SourceSql,1)-1)
insert
@temp values(@ch)
set
@SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')
end
return
end
----调用
select
* from dbo.f_splitstr('1,2,3,4',',')
--结果:
1
2
3
4
CREATE
function Get_StrArrayLength
(
@str varchar(1024),
--要分割的字符串
@split
varchar(10)
--分隔符号
)
returns
int
as
begin
declare
@location int
declare
@start int
declare
@length int
set @str=ltrim(rtrim(@str))
set @location=charindex(@split,@str)
set @length=1
while
@location<>0
begin
set @start=@location+1
set @location=charindex(@split,@str,@start)
set @length=@length+1
end
return
@length
end
调用示例:select dbo.Get_StrArrayLength('78,1,2,3',',')
返回值:4
二、按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便
CREATE
function Get_StrArrayStrOfIndex
(
@str varchar(1024),
--要分割的字符串
@split
varchar(10),
--分隔符号
@index<
4000
/span>
int
--取第几个元素
)
returns
varchar(1024)
as
begin
declare
@location int
declare
@start int
declare
@next int
declare
@seed int
set @str=ltrim(rtrim(@str))
set @start=1
set @next=1
set @seed=len(@split)
set @location=charindex(@split,@str)
while
@location<>0
and
@index>@next
begin
set @start=@location+@seed
set @location=charindex(@split,@str,@start)
set @next=@next+1
end
if @location
=0
select
@location =len(@str)+1
--这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。
return
substring(@str,@start,@location-@start)
end
调用示例:select dbo.Get_StrArrayStrOfIndex('8,9,4',',',2)
返回值:9
三、结合上边两个函数,象数组一样遍历字符串中的元素
create
function f_splitstr(@SourceSql
varchar(8000),@StrSeprate
varchar(100))
returns
@temp table(F1
varchar(100))
as
begin
declare
@ch as
varchar(100)
set
@SourceSql=@SourceSql+@StrSeprate
while(@SourceSql<>'')
begin
set
@ch=left(@SourceSql,charindex(',',@SourceSql,1)-1)
insert
@temp values(@ch)
set
@SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')
end
return
end
----调用
select
* from dbo.f_splitstr('1,2,3,4',',')
--结果:
1
2
3
4
相关文章推荐
- SQLSERVER分隔字符串的函数
- SqlServer:根据指定分隔符,把传入字符串分隔处理后,返回数据表,函数功能类似.NET的string.Split()
- SQLServer中的字符串截取函数使用示例
- [C/C++]_[初级]_[标准库之几种算法库函数的运用,如字符串查找(字符个数查找)、分隔、删除、替换、排序、字符交换位置、大小写转换等等]
- SQLserver字符串分割函数
- sqlserver 字符串相关函数
- sqlserver字符串处理函数大全
- sqlserver,一个自定义函数(提取字符串中的数值,包含0-9和‘.’)
- Sql字符串分隔函数
- SQLserver字符串分割函数
- 设置你想要的 分隔符号 比如,;/t 等,这个函数就可以在字符串里边查找分隔符号了
- sqlserver分隔字符串,查找父类下所有子类,删除重复字符串,计算一字符串在别一字符中出现的次数
- SqlServer中解析字符串的表值函数
- PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
- sqlserver字符串拆分函数
- sqlserver字符串处理函数
- 字符串分隔函数strtok
- MSSQL利用表值函数实现字符串的分隔
- Sqlserver列的内容连接为字符串用逗号分隔
- SQL自定义函数split 将数组(分隔字符串)返回阵列(表)