SQL Server用户自定义函数:Split

王朝mssql·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

大家都知道在VBScript里面有一个很方便的函数:split。但是在SQL Server里面却没有这样的函数。今天我因某个应用的需要,顺手写了一个。

说明:

1、这个函数是直接用","作为分隔符的。当然你可以把它改成以别的字符为分隔符,或者让用户自己来输入分隔符(把分隔符作为一个参数)。

2、这个函数里面,假设要拆分的字符串是由一组整型数加上","组成的。当然这是我在这个应用中的情况。你可以根据需要改成其他数据类型,或者把数据类型作为一个参数让用户输入。

随便写写,没有作太多讲究,期待有心人的改进:)

/****************************************************

* Name: T-SQL Split算法实现(整型)

* Author:Xinsoft

* Create Date: 2004-12-01

* Version: V1.0.00

*****************************************************/

CREATE Function Func_SplitInt

(

@InputStr varchar(250)

)

Returns @Func_SplitInt table

(

val int

)

as

Begin

Declare @str varchar(250)

Declare @substr varchar(250)

Declare @iLen int

Declare @iStart int

set @str=RTrim(Ltrim(@InputStr))

set @iStart=CHARINDEX( ',' , @str )

set @iLen=Len( @str )

IF @iStart>0

Begin

set @substr=substring( @str , 1 , @iStart-1 )

set @str=substring( @str , @iStart+1 , @iLen-@iStart )

End

Else

Begin

set @substr=@str

set @str=''

End

set @substr=RTRIM( LTRIM( @substr ) )

insert @Func_SplitInt select id=cast( @substr as int )

While Len( @str )>0

Begin

---------------- Loop Begin ---------------

set @iStart=CHARINDEX( ',' , @str )

set @iLen=Len( @str )

IF @iStart>0

Begin

set @substr=substring( @str , 1 , @iStart-1 )

set @str=substring( @str , @iStart+1 , @iLen-@iStart )

End

Else

Begin

set @substr=@str

set @str=''

End

set @substr=RTRIM( LTRIM( @substr ) )

insert @Func_SplitInt select id=cast( @substr as int )

---------------- Loop End ----------------

End

Return

End

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航