sqlServer中的split分隔函数

 

-- 1. 方法   连续二个以上的分隔符的作一个处理
-- =============================================
-- Author:  <jason>
-- Create date: <2009-11-12>
-- Description: <分解字符串>
-- =============================================
---执行
--     SELECT * from  dbo.Split_String ('a,b,eeec,,,,,,,d,,,,,we333r',',')
ALTER FUNCTION [dbo].[Split_String]
(
@split_string varchar(max), --要进行分解的字符串
@tag_string varchar(10) --分解标志
)
RETURNS
@split_table TABLE
(
 split_value varchar(200)
)
AS
BEGIN
declare @temp_string varchar(max)
declare @start_index int
declare @end_index int

while 1=1
begin
  set @start_index = 0
  select @end_index = CharIndex(@tag_string,@split_string,@start_index)
--PRINT CharIndex(',','a44b,c55,d,we3r',6)
  if @end_index <> 0
  begin
   set @temp_string = Substring(@split_string,@start_index,@end_index)
--PRINT Substring('a44b,c,d,we3r',6,7)
   if @temp_string is not null and @temp_string <> ''
    insert into @split_table(split_value) values(@temp_string)
   set @start_index = @end_index + 1
   set @split_string = Substring(@split_string,@start_index,len(@split_string))
-- PRINT Substring('a44b,c,d,we3r',6,len('a44b,c,d,we3r'))
  end
  else
  begin
    if @split_string is not null and @split_string <> ''
       insert into @split_table(split_value) values(@split_string)
--退出while环循
   break
  end
end

RETURN
END
GO

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO

 

----方法2--------------------------------

-----------------------------------------
--在SQL中分割字符串 就是Split
----分割字符串
--创建函数
create function split
(
  @SourceSql varchar(8000),
  @StrSeprate varchar(10)
)
returns @temp table(F1 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)-@i)
     set @i=charindex(@StrSeprate,@SourceSql)
   end
   if @SourceSql<>''
     insert @temp values(@SourceSql)
   return
end
--执行
go
select * from split('01,,,02,03,dd,ss',',')

转载于:https://www.cnblogs.com/wj-wangjun/archive/2009/11/13/1602666.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值