SSMS
 sql >> Teknologi Basis Data >  >> Database Tools >> SSMS

Pisahkan Satu Nilai Bidang Menjadi Beberapa Nilai Kolom Panjang Tetap di T-SQL

Seperti Anda .net developer Saya rasa akan mudah bagi Anda untuk menulis .net fungsi yang dapat Anda gunakan di T-SQL Anda kode. Untuk menulis SQL CLR fungsi periksa jawaban ini (Saya telah menggunakan salah satu tautan untuk mengimplementasikan SQL CLR fungsi ekspresi reguler.

Katakanlah Anda perlu membagi nilai dengan potongan 4-panjang dan menampilkan maksimum 6 di antaranya:

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;

Sekarang data dibagi. Mari pivot itu dan tampilkan hanya 6 bagian:

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;

Disini saya menggunakan regex berfungsi untuk membagi data dan PIVOT untuk membuat kolom dan mengecualikan beberapa potongan. Anda sekarang dapat memasukkan data ke dalam tabel untuk mewujudkannya dan kemudian mengekspornya. Anda dapat mengimplementasikan fungsi tersebut menggunakan tautan di atas atau membuat fungsi Anda sendiri dengan melakukan sesuatu yang Anda butuhkan.



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. SQL Server:aktifkan koneksi jarak jauh tanpa SSMS

  2. Waktu prosedur habis dari ADO.NET tetapi tidak di SSMS

  3. MSSQL Server Management Studio (SSMS) 2005 Template Kueri Baru

  4. Bagaimana cara mengambil data dari SQL Server berdasarkan contoh di bawah ini?

  5. Bagaimana cara menghapus nama server yang di-cache dari dialog Connect to Server?