Sql实现Split
来源:互联网 发布:vb6.0替代软件 编辑:程序博客网 时间:2024/04/28 15:01
create function [dbo].[Get_StrArrayLength]
(
@str varchar(max), --要分割的字符串
@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)
--设置分隔后的字符串长度为1
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
drop function [dbo].[Get_StrArrayStrOfIndex]
go
create function [dbo].[Get_StrArrayStrOfIndex]
(
@str varchar(max), --要分割的字符串
@split varchar(10), --分隔符号
@index int --取第几个元素
)
returns varchar(1024)
as
begin
declare @location int
declare @start int
declare @next int
declare @seed int
declare @pos int
if @index<=0
return ''
set @str=ltrim(rtrim(@str))
set @start=1
set @next=1
set @pos=1
set @seed=len(@split)
set @location=charindex(@split,@str)
while @location<>0 and @index>@next and @pos<@index
begin
set @start=@location+@seed
set @location=charindex(@split,@str,@start)
set @next=@next+1
set @pos=@pos+1
end
if @location =0
if @pos<>@index
return ''
else
select @location =len(@str)+1
--这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。
return substring(@str,@start,@location-@start)
end
declare @id varchar(30)
select @id=dbo.Get_StrArrayStrOfIndex('4321,2223,333,5554',',',2)
我的改进版本,可像Hashtable一样访问
drop function [dbo].[Get_ArrayStrOfName]
Go
create function [dbo].[Get_ArrayStrOfName]
(
@str varchar(5000), --要分割的字符串
@split varchar(1), --分隔符号
@itemSplit varchar(1), --元素分割符
@item varchar(20) --取哪个元素
)
returns varchar(1024)
As
Begin
declare @location int --找到子串的位置
declare @tempItem varchar(50) --当前项
declare @tempItemName varchar(20) --当前项的名称
set @str=ltrim(rtrim(@str))
set @tempItem=''
set @tempItemName=''
while len(@str)>0
Begin
-----找到一个子项--
set @location=charindex(@split,@str,1)
if @location>0
Begin
set @tempItem=substring(@str,1,@location-1)
set @str=substring(@str,@location+1,len(@str))
End
Else
Begin
set @tempItem=@str
set @str=''
end
----------判断当前子项的名称--------------
set @location=charindex(@itemSplit,@tempItem,1)
if @location>0
Begin
set @tempItemName=substring(@tempItem,1,@location-1)
if @tempItemName=@item
return substring(@tempItem,@location+1,len(@tempItem))
End
End
return ''
End
Go
declare @id varchar(30)
select @id=dbo.Get_ArrayStrOfName('ff@4321,ffg@2223,ggg@333,ddd@5554', ',', '@', 'ff')
print @id
- SQL实现Split 函数
- Sql实现Split
- SQL split 功能实现
- SQL Split实现
- Sql 实现Split
- SQL 实现Split函数
- SQL实现Split功能
- SQL里实现Split函数
- SQL实现字符串Split方法
- SQL Server实现split功能
- sql中实现split()功能
- sql中实现split()功能
- sql中实现split()功能
- SQL实现split功能的函数
- SQL实现split功能的函数
- SQL里实现类似SPLIT功能
- SQL server实现split功能的函数
- sql 实现java 中 split 功能
- Windows CE内存管理
- 生活静好
- 比尔哈弗演讲
- yy
- 从电信看中国BI
- Sql实现Split
- Teradata银行业数据仓库解决方案
- 最强隐藏文件夹软件下载:比文件夹隐藏大师更好用
- uml基础与应用--类图和包图
- 内存数据库及其应用
- 怎么学习Java?请教一下。
- 蓝牙问题。请真正的c#高手帮忙?谢谢
- google hacking
- MC/Service Guard测试(1/2)