数据库中Split功能的实现--自定义函数(源码)

 

****案例:

现有一字符串 'aaaa,bbbb,cccc,'  ,根据“,”拆分字符串,并返回结果集。

****方案:

下面给出了一个通用的自定义函数的源码,仅供参考。

****注意:

字符串中如果设计到多国语言文字(韩文、日文),请自己进行灵活的处理。

****源码:

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[fn_Comm_SplitStr]'and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[fn_Comm_SplitStr]
GO

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO

  
/*  
********************************************  
function    :    split string ,return table  
  
create by    :    
  
create at    :    2007-02-10   
  
modify by    :     
  
modify at    :     
  
remark        :     
    
case        :   SELECT * FROM DBO.fn_Comm_SplitStr('aaaa,bbbb,cccc,',',')
  
********************************************  
*/    
  
CREATE       FUNCTION DBO.fn_Comm_SplitStr 
(  
  
@SOURCE_STR NVARCHAR(4000)  
  ,
@SEPARATE_STR VARCHAR(10)  
)  
RETURNS @TSTR TABLE   
(  
  STR1  
NVARCHAR(200)  
  , SORT  
INT  
)  
AS  

BEGIN  
    
DECLARE    @I INT  
            ,
@J INT  

    
SELECT    @SOURCE_STR = RTRIM(LTRIM(@SOURCE_STR))  
            , 
@I = CHARINDEX(@SEPARATE_STR@SOURCE_STR)  
            , 
@J = 0  

    
WHILE @I>=1  
        
BEGIN    
            
INSERT @TSTR (STR1,SORT) VALUES(LEFT(@SOURCE_STR,@I-1), @J + 1)  

            
SELECT @SOURCE_STR=SUBSTRING(@SOURCE_STR,@I+1,LEN(@SOURCE_STR)-@I)  
                    , 
@I=CHARINDEX(@SEPARATE_STR,@SOURCE_STR)  
                    , 
@J = @J + 1  
        
END  

    
IF @SOURCE_STR<>''   
        
INSERT @TSTR (STR1,SORT) VALUES(@SOURCE_STR@J + 1)
      
    
RETURN 
END  

GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值