【发布时间】:2013-11-22 19:57:48
【问题描述】:
我使用的是 SQL Server 2008。我有一个名为 func_SPLIT(@Str as varchar(2000)) 的拆分函数,它将接受像“123、456、789”这样的字符串并将它们拆分为如下表格格式:
Column:
123
456
789
所以,如果我选择一个记录,我可以将该字符串拆分为表格格式...稍后加入它们...
这是一个我正在尝试解决的问题。
假设,我有一个查询:
Select Column1, Column2
from Table1
它返回多条记录如下:
Column1 Column2
a 11111, 22222, 33333
b 44444
c 55555, 66666
d 88888, 99999
有没有办法可以将 Column2 中的所有这些值转换为表格格式,以便以后加入它们……如下面的格式:
Column1 Column2
a 11111
a 22222
a 33333
b 44444
c 55555
c 66666
d 88888
d 99999
这里是分割函数
ALTER FUNCTION [dbo].[Split]
(
@RowData NVARCHAR(MAX),
@Delimeter NVARCHAR(MAX)
)
RETURNS @RtnValue TABLE
(
ID INT IDENTITY(1,1),
Data NVARCHAR(MAX)
)
AS
BEGIN
DECLARE @Iterator INT
SET @Iterator = 1
DECLARE @FoundIndex INT
SET @FoundIndex = CHARINDEX(@Delimeter,@RowData)
WHILE (@FoundIndex>0)
BEGIN
INSERT INTO @RtnValue (data)
SELECT
Data = LTRIM(RTRIM(SUBSTRING(@RowData, 1, @FoundIndex - 1)))
SET @RowData = SUBSTRING(@RowData,
@FoundIndex + DATALENGTH(@Delimeter) / 2,
LEN(@RowData))
SET @Iterator = @Iterator + 1
SET @FoundIndex = CHARINDEX(@Delimeter, @RowData)
END
INSERT INTO @RtnValue (Data)
SELECT Data = LTRIM(RTRIM(@RowData))
RETURN
END
谢谢,
【问题讨论】:
-
我们可以看看你的分割功能吗?
-
更新了拆分功能。感谢您对此进行调查...
标签: sql sql-server sql-server-2008