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'
执行结果如下:
a
b
c
d
e
f
g
(7 row(s) affected)
<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>