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.