sql >> Databáze >  >> RDS >> Sqlserver

Efektivní dotaz pro rozdělení sloupce s oddělovači do samostatné tabulky

Vytvořte funkci rozdělení:

CREATE FUNCTION dbo.SplitStrings(@List NVARCHAR(MAX))
RETURNS TABLE
AS
   RETURN ( SELECT Item FROM
       ( SELECT Item = x.i.value('(./text())[1]', 'nvarchar(max)')
         FROM ( SELECT [XML] = CONVERT(XML, '<i>'
         + REPLACE(@List, '.', '</i><i>') + '</i>').query('.')
           ) AS a CROSS APPLY [XML].nodes('i') AS x(i) ) AS y
       WHERE Item IS NOT NULL
   );
GO

Pak se zbavte všech nesmyslných kurzorů a opakování a udělejte toto:

INSERT dbo.mrhierlookup
(
  heiraui,
  aui
)
SELECT s.Item, m.aui
  FROM dbo.mrhier3 AS m
  CROSS APPLY dbo.SplitStrings(m.ptr) AS s
GROUP BY s.Item, m.aui;



  1. Smyčka SQL Server – jak mohu procházet sadou záznamů

  2. COPY s dynamickým názvem souboru

  3. 2 způsoby, jak vrátit seznam spouštěčů v databázi SQL Server pomocí T-SQL

  4. Před spuštěním skriptů Delete/Load data uzamkněte databázi Oracle