SQL Server自定义函数split


关键词

SQL Server自定义函数split

摘要

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

大家都知道在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

转自:http://blog.sina.com.cn/s/blog_5677bc540100045t.html

 

要饭二维码

洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!

文章的版权

本文属于“洪哥笔记”原创文章,转载请注明来源地址:SQL Server自定义函数split:http://www.splaybow.com/post/sqlserver-split-function.html

如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:8771947!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D

« SQL Server无法附加数据库 SQL Server数据库设计规范 »