大家都知道在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 |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-29 15:19 , Processed in 0.154005 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.