自写的几个常用Sql字符串拆分函数
--用指定的字符拆分一个字符串,并传入一个字符串判断传入的这个字符串是否存在于拆分以后的字符串数组中
create function SplitString(@expression varchar(500),@char varchar(10),@str varchar(50))
returns bit
as
begin
--如果传进来的字符串是null则返回0
if(isnull(@expression,' ')=' ')
return 0
declare @beginIndex int,@endIndex int --截取子串的起始索引和结束索引
declare @Count int --记录循环的次数
set @beginIndex=1--注意:Sql中字符串的索引是从1开始
set @Count=0
while(1=1)
begin
set @Count=@Count+1
set @endIndex=charindex(@char,@expression,@beginIndex)
--如果没有找到分隔符,则将整个要分割的串与需要判断的串对比
if(@endIndex=0)
begin
--如果是第一次截取子串
if(@Count=1)
begin
if(@expression=@str)
begin
return 1
end
begin
return 0
end
end
else --如果是最后一次截取子串,则将最后一个分隔符后面的字符串取出来与需要判断的串对比
begin
if(@str=substring(@expression,@beginIndex,len(@expression)-@beginIndex+1))
begin
return 1
end
else
begin
return 0
end
end
end
--如果匹配,则返回1
if(@str=substring(@expression,@beginIndex,@endIndex-@beginIndex))
begin
return 1
end
else --如果不匹配则继续寻找
begin
set @beginIndex=@endIndex+1
end
end
return 0
end
--用指定的字符拆分一个字符串,并传入一个索引,返回拆分后指定索引的字串(索引从1开始)
create function IndexOfArray(@expression varchar(500),@char varchar(10),@Index int)
returns varchar(200)
as
begin
declare @beginIndex int,@endIndex int --截取子串的起始索引和结束索引
declare @Count int --记录循环的次数
set @beginIndex=1 --注意:Sql中字符串的索引是从1开始
set @Count=0
while(1=1)
begin
set @Count=@Count+1
set @endIndex=charindex(@char,@expression,@beginIndex)
--如果没有找到分隔符,则截取最后一个分隔符到字符串末尾的子串
if(@endIndex=0)
begin
return substring(@expression,@beginIndex,len(@expression)-@beginIndex+1)
end
--如果这一次截取出来的字符串的索引是指定索引,则返回截取出来的字符串
if(@Count=@Index)
begin
return substring(@expression,@beginIndex,@endIndex-@beginIndex)
end
else --否则继续
begin
set @beginIndex=@endIndex+1
continue
end
end
return ''
end
go
--用指定的字符拆分一个字符串,并传入一个字符串判断传入的这个字符串
--是否与拆分以后的字符串数组中指定索引的字符串相等
create function SplitEquare(@expression varchar(200),@char varchar(10),@Index int,@str varchar(100))
returns bit
as
begin
declare @SplitStr varchar(100)
set @SplitStr=dbo.IndexOfArray(@expression,@char,@Index)
if(@SplitStr=@str)
begin
return 1
end
else
begin
return 0
end
return 0
end
go
create function SplitString(@expression varchar(500),@char varchar(10),@str varchar(50))
returns bit
as
begin
--如果传进来的字符串是null则返回0
if(isnull(@expression,' ')=' ')
return 0
declare @beginIndex int,@endIndex int --截取子串的起始索引和结束索引
declare @Count int --记录循环的次数
set @beginIndex=1--注意:Sql中字符串的索引是从1开始
set @Count=0
while(1=1)
begin
set @Count=@Count+1
set @endIndex=charindex(@char,@expression,@beginIndex)
--如果没有找到分隔符,则将整个要分割的串与需要判断的串对比
if(@endIndex=0)
begin
--如果是第一次截取子串
if(@Count=1)
begin
if(@expression=@str)
begin
return 1
end
begin
return 0
end
end
else --如果是最后一次截取子串,则将最后一个分隔符后面的字符串取出来与需要判断的串对比
begin
if(@str=substring(@expression,@beginIndex,len(@expression)-@beginIndex+1))
begin
return 1
end
else
begin
return 0
end
end
end
--如果匹配,则返回1
if(@str=substring(@expression,@beginIndex,@endIndex-@beginIndex))
begin
return 1
end
else --如果不匹配则继续寻找
begin
set @beginIndex=@endIndex+1
end
end
return 0
end
--用指定的字符拆分一个字符串,并传入一个索引,返回拆分后指定索引的字串(索引从1开始)
create function IndexOfArray(@expression varchar(500),@char varchar(10),@Index int)
returns varchar(200)
as
begin
declare @beginIndex int,@endIndex int --截取子串的起始索引和结束索引
declare @Count int --记录循环的次数
set @beginIndex=1 --注意:Sql中字符串的索引是从1开始
set @Count=0
while(1=1)
begin
set @Count=@Count+1
set @endIndex=charindex(@char,@expression,@beginIndex)
--如果没有找到分隔符,则截取最后一个分隔符到字符串末尾的子串
if(@endIndex=0)
begin
return substring(@expression,@beginIndex,len(@expression)-@beginIndex+1)
end
--如果这一次截取出来的字符串的索引是指定索引,则返回截取出来的字符串
if(@Count=@Index)
begin
return substring(@expression,@beginIndex,@endIndex-@beginIndex)
end
else --否则继续
begin
set @beginIndex=@endIndex+1
continue
end
end
return ''
end
go
--用指定的字符拆分一个字符串,并传入一个字符串判断传入的这个字符串
--是否与拆分以后的字符串数组中指定索引的字符串相等
create function SplitEquare(@expression varchar(200),@char varchar(10),@Index int,@str varchar(100))
returns bit
as
begin
declare @SplitStr varchar(100)
set @SplitStr=dbo.IndexOfArray(@expression,@char,@Index)
if(@SplitStr=@str)
begin
return 1
end
else
begin
return 0
end
return 0
end
go