我有一個問題,根據(*)來分割這一列
。| Column x |
|---|
| 我 (a)一些文本 (b)一些更多的文本 (c)文本 | 。我 (a)一些文本 (b)一些更多的文本 (c)文本 | 我 |
我需要一個類似的輸出;
| Col 1 | Col 2 | Col 3 |
|---|---|---|
| (c) Text | ||
| (c) Text |
是的,在(a)之前還有一個隨機的I,但希望我們能以某種方式忽略......
uj5u.com熱心網友回復:
假設有一些獨特的東西來識別每一行,你可以用STRING_SPLIT()基于CROSS APPLY的PIVOT:
DECLARE @x table
(
[Id] int IDENTITY(1,1)。
[Values] nvarchar(4000) --這是個糟糕的列名。
);
INSERT @x([Values]) VALUES
(N'I (a)Some Text (b)Some more Text (c) Text')。
(N'nonsense (a) mort (b) splungy (c) blat');
;WITH x AS)
(
SELECT Id, [value] = N' ('/span> f. [value]。
rn = ROW_NUMBER() OVER (PARTITION BY x. Id ORDER BY f. [value])
FROM @x AS x
CROSS APPLY STRING_SPLIT(x.[Values], N' (') AS f
WHERE f.[value] LIKE N'_)%'
)
SELECT [1], [2], [3] FROM X
PIVOT (MAX(value) FOR rn IN ([1] 。 [2], [3]) AS p。
結果:
1 2 3
------------ ----------------- --------
(a)一些文本 (b)一些更多的文本 (c)文本
(a)抵押 (b)濺射 (c)平鋪
而這里是一個稍微不同的,它回傳Id和問題中的確切列標題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/311082.html
標籤:
