将新行更改为新记录

Change new line into New Record

我有记录如下:

是否可以将SQL Server 2008 R2上的这条记录变成下面的table?

图片1 SiteName 类型是 Varchar,Allocation 也是 Varchar。每个值都有新行,我的意思是新行是 char(13)。该值可以是 '(0.0 - 12.0)' + CHAR(13) + '(15.0 - 18.0)' 等等。

图2 这个 char(13) 是在字段分配上将每一行分成新行的引用,每一行都将继承它们的 SiteName

新格式化的table会转储到新的table(图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);