sql >> Databáze >  >> Database Tools >> SSMS

Rozdělit hodnotu jednoho pole na více hodnot sloupců s pevnou délkou v T-SQL

Jako vy jste .net vývojář Myslím, že pro vás bude snadné napsat .net funkci, kterou můžete použít ve svém T-SQL kód. Chcete-li napsat SQL CLR kontrola funkcí tato odpověď (Použil jsem jeden z odkazů k implementaci SQL CLR funkce regulárního výrazu.

Řekněme, že potřebujete rozdělit hodnoty na 4-délkové části a zobrazit maximálně 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;

Nyní jsou data rozdělena. Pojďme pivot a zobrazit pouze 6 kusů:

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;

Zde používám regex funkce pro rozdělení dat a PIVOT vytvořit sloupce a vyloučit některé části. Nyní můžete vložit data do tabulky, abyste je zhmotnili, a poté je exportovat. Tuto funkci můžete implementovat pomocí výše uvedeného odkazu nebo si vytvořit vlastní funkci, která dělá něco, co potřebujete.



  1. Jak funguje funkce exportu phpMyAdmin?

  2. phpMyAdmin na GAE - Autentizace

  3. Příkaz MySQL ALL nefunguje v phpmyadmin

  4. SQL Server ISNUMERIC() Vyjasnění