Ponieważ jesteś .net
programista Myślę, że napisanie pliku .net
będzie dla ciebie łatwe funkcja, której możesz użyć w swoim T-SQL
kod. Aby napisać SQL CLR
sprawdź funkcje tę odpowiedź
(Użyłem jednego z linków do zaimplementowania SQL CLR
funkcja wyrażenia regularnego.
Załóżmy, że musisz podzielić wartości na kawałki o długości 4 i pokazać maksymalnie 6 z nich:
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;
Teraz dane są podzielone. Zróbmy pivot
i pokaż tylko 6 porcji:
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;
Tutaj używam regex
funkcja podziału danych i PIVOT
aby utworzyć kolumny i wykluczyć niektóre porcje. Możesz teraz wstawić dane do tabeli, aby je zmaterializować, a następnie wyeksportować. Możesz zaimplementować taką funkcję, korzystając z powyższego linku lub stworzyć własną funkcję, robiąc coś, czego potrzebujesz.