SQL STRING_AGG – spojení řádků do jedné hodnoty (concat string)

Poslední aktualizace:

Nedávno jsem řešil úlohu, když jsem potřeboval v tabulce spojit řádky v nějaké tabulce do 1 string hodnoty. To nebylo u SQL Server ještě nedávno úplně jednoduché, protože narozdíl od třeba mysql neobsahoval speciální funkci k tomu určenou (muselo se na to jít přes příkaz FOR XML PATH). V SQL Server 2017 byla ale nasazena funkce STRING_AGG a s ní je to daleko jednodušší.

Syntaxe funkce STRING_AGG

SELECT
   STRING_AGG (expression, separator) WITHIN GROUP (ORDER BY <order_by_expression_list> [ ASC | DESC ])
FROM <Tabulka>

Funkce má 2 povinné argumenty:

  • expression – sloupec s hodnotami, které se mají spojovat
  • separator – čím mají být hodnoty odděleny

Nepovinná klauzule WITHIN GROUP – pomocí klauzule můžeme hodnoty před spojením uspořádat vzestupně nebo sestupně

Příklad spojení (concatenate) řádků v tabulce do hodnoty (string)

CREATE TABLE Temp.dbo.Biportal_Test (
String VARCHAR(20)
)

INSERT INTO Temp.dbo.Biportal_Test (String)
VALUES
('Text,'),
('který'),
('chci'),
('agregovat'),
('na'),
('hodnotu')

SELECT * FROM Temp.dbo.Biportal_Test

Tabulka:

STRING_AGG - příklad

Převedení řádku tabulky na string:

SELECT STRING_AGG(String, ' ') AS Hodnota
FROM Temp.dbo.Biportal_Test

STRING_AGG - řešení příkladu - agregace řádku do hodnoty

SQL STRING_AGG – spojení řádků do jedné hodnoty (concat string)
5 (100%) 1 vote[s]

Honza Zedníček

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích společnosti Kentico, s.r.o v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval v několika bankách na pozicích finanční controller a manažer. Po práci se měním na vášnivého hráče tenisu, šachu a ochutnávače dobrých rumů. Mým velké štěstím, koníčkem a někdy stresorem se před 3 lety stal syn Kubíček. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Přidejte si mě na LinkedIn nebo se subscribněte na RSS kanál

Rubrika: RSS 1 Exclude SQL Funkce Štítky:

About Honza Zedníček

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích společnosti Kentico, s.r.o v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval v několika bankách na pozicích finanční controller a manažer. Po práci se měním na vášnivého hráče tenisu, šachu a ochutnávače dobrých rumů. Mým velké štěstím, koníčkem a někdy stresorem se před 3 lety stal syn Kubíček. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Přidejte si mě na LinkedIn nebo se subscribněte na RSS kanál

Napsat komentář

Vaše emailová adresa nebude zveřejněna.

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..