Тъй като сте .net
разработчик Предполагам, че ще ви бъде лесно да напишете .net
функция, която можете да използвате във вашия T-SQL
код. За да напишете SQL CLR
функции проверка този отговор
(Използвах една от връзките за внедряване на SQL CLR
функция за регулярни изрази.
Да приемем, че трябва да разделите стойностите на парчета с дължина 4 и да покажете максимум 6 от тях:
DECLARE @DataSouce TABLE
(
[RecordID] TINYINT IDENTITY(1,1) PRIMARY KEY
,[RecordData] NVARCHAR(MAX)
);
INSERT INTO @DataSouce ([RecordData])
VALUES ('test some test goes here')
,('some numbers go here - 1111122222233333344444444445');
SELECT DS.[RecordID]
,RM.[MatchID]
,RM.[CaptureValue]
FROM @DataSouce DS
CROSS APPLY [dbo].[fn_Utils_RegexMatches] ([RecordData], '.{1,4}') RM;
Сега данните са разделени. Нека pivot
и показва само 6 от парчетата:
SELECT *
FROM
(
SELECT DS.[RecordID]
,RM.[MatchID]
,RM.[CaptureValue]
FROM @DataSouce DS
CROSS APPLY [dbo].[fn_Utils_RegexMatches] ([RecordData], '.{1,4}') RM
) DS
PIVOT
(
MAX([CaptureValue]) FOR [MatchID] IN ([0], [1], [2], [3], [4], [5], [6])
) PVT;
Тук използвам regex
функция за разделяне на данните и PIVOT
за създаване на колони и изключване на някои от парчетата. Вече можете да вмъкнете данните в таблицата, за да ги материализирате и след това да ги експортирате. Можете да внедрите такава функция, като използвате връзката по-горе или да създадете своя собствена функция, като правите нещо, от което се нуждаете.