您的位置:首页 > 数据库

SQL实现Split 函数

2008-11-25 16:20 381 查看

Split 函数

返回一维字符串数组, 实际上,SQL中没有数组的存储结构。所以用TABLE来代替。嘿嘿 :)

Split(expression, delimiter)

参数

expression字串串表达式,包含子字符串和分隔符。delimiter用于标识子字符串界限的字符。如果 delimiter 为零长度字符串,则返回包含整个 expression 字符串的单元素数组。

源码

CREATE FUNCTION dbo.Split(
@expression nvarchar(max),
@delimiter nvarchar(10)
)returns @retval TABLE([key] nvarchar(max))
AS
begin
declare @index int,@length int
select @length=len(@delimiter)
while charindex(@delimiter,@expression)>0
begin
set @index=charindex(@delimiter,@expression)-1
insert @retval values (left(@expression,@index))
set @expression=stuff(@expression,1,@index + @length,'')
end
insert @retval values(@expression)
return
end



实例

下面的示例利用 Split 函数从字符串中返回数组。函数对分界符逗号(,)进行文本比较,返回所有的子字符串。

declare @test nvarchar(255)
set @test = 'a,b,c,d,e,f,g'

select [key] from dbo.Split(@test, ',')

执行结果如下:
a
b
c
d
e
f
g
(7 row(s) affected)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: