Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Metóda 1:Použitie `String_agg` (SQL Server 2017 a neskôr)
Toto je najjednoduchší a najúčinnejší prístup pre moderné verzie SQL Server:
`` sql
Vyberte String_agg (YourColumn, ',') ako zreťazené hodnoty
Od tvojho dňa;
`` `
Vymeňte `YourTable` a` YourColumn` za skutočné názvy tabuľky a stĺpca. Tým sa vráti jeden riadok so všetkými hodnotami z `yourColumn` zreťazeným do jedného reťazca, oddelený čiarkami.
Metóda 2:Použitie `pre XML Path` (SQL Server 2016 a skôr)
Pre staršie verzie SQL Server poskytuje „pre cestu XML“ podobnú funkčnosť:
`` sql
Vyberte veci (((
Vyberte ',' + YourColumn
Od tvojho
Pre cestu XML ('')
), 1, 1, '') ako zreťazené hodnoty;
`` `
Táto metóda používa subquery na zreťazenie hodnôt s čiarkami a potom funkcia „Stuff` odstráni vedúcu čiarku.
Príklad:
Povedzme, že máte tabuľku s názvom „Zamestnanci“ so stĺpom s názvom „Employeename“:
| Employeename |
| --- | --- |
| John Doe |
| Jane Smith |
| David Lee |
Pomocou `String_agg`:
`` sql
Vyberte String_agg (EmployeenAME, ',') ako zamestnanecké mames
Od zamestnancov;
`` `
Toto by sa vrátilo:
| Zamestnanecké jamy
| --- | --- |
| John Doe, Jane Smith, David Lee |
Použitie `pre cestu XML`:
`` sql
Vyberte veci (((
Vyberte ',' + EmployeenAME
Od zamestnancov
Pre cestu XML ('')
), 1, 1, '') ako zamestnanecké jamy;
`` `
To by sa tiež vrátilo:
| Zamestnanecké jamy
| --- | --- |
| John Doe, Jane Smith, David Lee |
Dôležité úvahy:
* nulové hodnoty: Obe metódy manipulujú s hodnotami null tým, že ich efektívne ignorujú. Ak potrebujete reprezentovať hodnoty `null` vo svojom zrekonštruovanom reťazci (napr. Používanie špeciálnej značky, ako je„ NULL “), budete musieť do agregácie pridať vyhlásenie„ prípad “. Napríklad s `String_agg`:
`` sql
Vyberte String_agg (prípad, keď je Employeename null, potom „null“ ENDEEENAME END “, '), ako sú zamestnanecké mames
Od zamestnancov;
`` `
* Typ údajov: Uistite sa, že dátový typ vášho stĺpca je kompatibilný s zreťazením reťazca. Ak je to potrebné, použite „Cast` alebo` Convert` na prevod stĺpca na vhodný typ údajov (napr. `Varchar`).
* Výkon: Pre veľmi veľké tabuľky je `String_agg` vo všeobecnosti výkonnejší ako" pre cestu XML ".
Vyberte metódu, ktorá je vhodná pre vašu verziu SQL Server. `String_agg` je preferovaná a čitateľnejšia možnosť, ak ju podporuje vaša verzia servera SQL.