我的记录如下所示:
是否可以将SQL Server 2008 R2上的此记录转换为下表?
图片1SiteName类型也是Varchar,分配也是Varchar。每个值都有新行,我的意思是新行是char(13)。值可以是'(0.0-12.0)'+ CHAR(13)+'(15.0-18.0)',依此类推。
图片2此char(13)是将每一行拆分为字段分配上的新行的引用,并且每一行都将继承其SiteName
新格式的表将转储到新表(图2)中,因此原始数据(图1)仅供参考。
我很想在SQL Server 2008上执行此操作,任何建议将不胜感激。
您需要像下面的示例一样拆分数据(如果CHAR(13) + CHAR(10)
不是您的新行分隔符,则可以按不同的符号拆分:
DECLARE @DataSource TABLE
(
[SiteName] NVARCHAR(128)
,[Allocation] NVARCHAR(MAX)
);
INSERT INTO @DataSource ([SiteName], [Allocation])
VALUES
('a', '1
2')
,('b', '3
4
5')
,('c', '6
7');
WITH DataSource ([SiteName], [Allocations]) AS
(
SELECT [SiteName]
,CAST('<a>' + REPLACE([Allocation], CHAR(13) + CHAR(10), '</a><a>') + '</a>' AS XML)
FROM @DataSource DS
)
SELECT DS.SiteName
,LTRIM(RTRIM(T.c.value('.', 'nvarchar(128)')))
FROM DataSource DS
CROSS APPLY DS.Allocations.nodes('./a') T(c);