本文为一些需要对特殊符号分隔的字符串进行解析,比如将
select ‘10,20,30,40,50,60’
这个字符串转化为一列多行
下面提供源代码:
1 SET QUOTED_IDENTIFIER ON
2 SET ANSI_NULLS ON
3 GO
4 ALTER FUNCTION [dbo].[Split](@String VARCHAR(MAX), @Delimiter CHAR(1))
5 RETURNS @temptable TABLE (items VARCHAR(8000))
6 AS
7 BEGIN
8 DECLARE @idx INT
9 DECLARE @slice VARCHAR(8000)
10 SET @idx = 1
11
12 IF LEN(@String)<1 OR @String IS NULL
13 RETURN
14
15 WHILE @idx!= 0
16 BEGIN
17 SET @idx =CHARINDEX(@Delimiter,@String)
18 IF @idx!=0
19 SET @slice =LEFT(@String,@idx - 1)
20 ELSE
21 SET @slice = @String
22 IF(LEN(@slice)>0)
23 INSERT INTO @temptable(items)VALUES(@slice)
24 SET @String =RIGHT(@String,LEN(@String)- @idx)
25 IF LEN(@String)= 0 BREAK
26 END
27
28 RETURN
29 END
30 GO
@String是传入的字符串,@Delimiter是分隔的字符(单字符)如(‘,’,‘/’)等
能帮朋友解决问题的记得给个关注支持一下,以后将多多分享SQL SERVER 相关知识
手机扫一扫
移动阅读更方便
你可能感兴趣的文章