SQL Server中自定义Split函数

原创 2004年07月08日 16:13:00

这是一个蛮久之前写的一个函数,因为写sql程序碰到了需要拆分字符串的情况。在vb中提供有这样的函数,或者在其他的语言的类库中的string对象也提供有拆分一个字符串到数组中的split函数。或许因为sql没有数组类型,所以也没有创建这样的字符串处理函数。我写了一个自定义函数来实现类似的功能。

sql没有数组类型,但是可以相似的有table类型数值。可以这么设计,函数输入值为一个字符类型(varchar之类的)的参数,返回一个table类型的结果。

定义如下:

1,参数定义和说明

输出参数:@splitString varchar(8000) -- 需要Split的字符串
          @separate varchar(10)  ---分隔符

返回:@returnTable table(col_Value varchar(20))  --单个字符长度可以按照需要修改

2,函数体

CREATE FUNCTION SplitStr (@splitString varchar(8000), @separate varchar(10))
RETURNS @returnTable table(col_Value varchar(20))
AS

BEGIN

declare @thisSplitStr varchar(20)
declare @thisSepIndex int
declare @lastSepIndex int

set @lastSepIndex = 0

if Right(@splitString ,len(@separate)) <> @separate set @splitString = @splitString + @separate
set @thisSepIndex = CharIndex(@separate,@splitString ,@lastSepIndex)

while @lastSepIndex <= @thisSepIndex
begin
         set @thisSplitStr = SubString(@splitString ,@lastSepIndex,@thisSepIndex-@lastSepIndex)
         set @lastSepIndex = @thisSepIndex + 1
         set @thisSepIndex = CharIndex(@separate,@splitString ,@lastSepIndex)
         insert into @returnTable values(@thisSplitStr)
end
return

END

 

 

 

下面是使用的例子:

使用实例:select * from SplitStr(‘123,456,789’,’,’)

结果:

col_value
-----------------------------------------------------------------------------
123
456
789

Microsoft SQL Server 自定义函数整理大全

SQL SERVER中是允许有自定义函数,Microsoft SQL Server 并不将用户限制在定义为 Transact-SQL 语言一部分的内置函数上,而是允许用户创建自己的用户定义函数。 函数...
  • ycl295644
  • ycl295644
  • 2016年02月29日 11:02
  • 2211

SQL Server 自定义函数

标量值函数 如果RETUR NS 子句指定一种标量数据类型,则函数为标量值函数 如果RETURNS 子句指定 TABLE,则函数为表值函数 如果RETURNS 子句指定的TABLE 不附带列,则该函数...
  • QingHeShiJiYuan
  • QingHeShiJiYuan
  • 2016年01月06日 15:45
  • 2053

sqlserver 自定义、删除、执行 函数和存储过程

自定义函数:```if (object_id('p_wm_get_dynstore', 'P') is not null) drop proc p_wm_get_dynstoregocreate ...
  • meylovezn
  • meylovezn
  • 2016年03月03日 11:50
  • 3382

sql server 自定义函数

  • 2012年08月27日 09:17
  • 51KB
  • 下载

Microsoft SQL Server 自定义函数整理大全

  • 2015年11月11日 15:41
  • 334KB
  • 下载

sql server 自定义格式化6位数字字符的函数

  • 2010年06月25日 13:58
  • 706B
  • 下载

SQL Server 自定义函数

标量值函数 如果RETUR NS 子句指定一种标量数据类型,则函数为标量值函数 如果RETURNS 子句指定 TABLE,则函数为表值函数 如果RETURNS 子句指定的TABLE 不附带列,则该函数...
  • QingHeShiJiYuan
  • QingHeShiJiYuan
  • 2016年01月06日 15:45
  • 2053

Microsoft SQL Server 自定义函数整理大全

SQL SERVER中是允许有自定义函数,Microsoft SQL Server 并不将用户限制在定义为 Transact-SQL 语言一部分的内置函数上,而是允许用户创建自己的用户定义函数。 函数...
  • ycl295644
  • ycl295644
  • 2016年02月29日 11:02
  • 2211

SQL SErver存储过程和用户自定义函数UDF

一、创建存储过程   存储过程可以输入参数、输出参数和返回值。其基本语法如下: eg:CREATE PROC myProc AS SELECT * FROM myTable; 二、使用ALTER修...
  • luozenghui529480823
  • luozenghui529480823
  • 2013年11月06日 15:54
  • 1298

Microsoft SQL Server 自定义函数整理大全--【叶子】

SQL SERVER中是允许有自定义函数,Microsoft SQL Server 并不将用户限制在定义为 Transact-SQL 语言一部分的内置函数上,而是允许用户创建自己的用户定义函数。 ...
  • maco_wang
  • maco_wang
  • 2011年03月19日 19:37
  • 16062
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL Server中自定义Split函数
举报原因:
原因补充:

(最多只允许输入30个字)