天天看点

sql实现分段功能的函数

--简单分段语句

declare @b varchar(20)
select @b='a-b-c-d-e'
--处理
declare @sql varchar(4000)
select @sql= 'select '''+replace(@b,'-',''' union all select ''') ''''
exec(@sql)      

--实现 split 分段功能的函数

create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(a varchar(100))
as 
begin
declare @i int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
while @i>=1
begin
insert @temp values(left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)[email protected])
set @i=charindex(@StrSeprate,@SourceSql)
end
if @SourceSql<>'/'
insert @temp values(@SourceSql)
return 
end
--用法:
select * from dbo.f_split('A:B:C:D:E',':')
--输出
  a
1 A
2 B
3 C
4 D
5 E      

--实现简单模糊查找的过程

create procedure splitter
@str varchar(1024)
as
declare @s varchar(1024)
declare @i int
set @s='select message from T_QQMsgLog where 1=1'
set @i=1