Như bạn là .net nhà phát triển Tôi đoán bạn sẽ dễ dàng viết một .net mà bạn có thể sử dụng trong T-SQL của mình mã số. Để viết SQL CLR kiểm tra chức năng câu trả lời này
(Tôi đã sử dụng một trong các liên kết để triển khai SQL CLR hàm regex.
Giả sử bạn cần chia các giá trị thành 4 phần độ dài và hiển thị tối đa 6 giá trị trong số đó:
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;
Bây giờ dữ liệu được chia nhỏ. Hãy pivot nó và chỉ hiển thị 6 trong số các phần:
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;
Ở đây tôi sử dụng regex chức năng tách dữ liệu và PIVOT để tạo cột và loại trừ một số phần. Bây giờ bạn có thể chèn dữ liệu vào bảng để hiện thực hóa nó và sau đó xuất nó. Bạn có thể triển khai chức năng như vậy bằng cách sử dụng liên kết ở trên hoặc tạo chức năng của riêng bạn để làm điều gì đó bạn cần.