Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Existuje nejaká funkcia na serveri SQL Server na vrátenie všetkých hodnôt stĺpca separovaného čiarkou, ktorú nechcete používať slučku alebo oddelený kurzor?

Áno, server SQL Server ponúka niekoľko spôsobov, ako zreťaziť všetky hodnoty zo stĺpca do jedného reťazca oddeleného čiarkami bez použitia slučiek alebo kurzorov. Najefektívnejšie metódy vo všeobecnosti zahŕňajú použitie `String_agg` (dostupné na serveri SQL Server 2017 a neskôr) alebo„ pre cestu XML “(funguje aj v starších verziách).

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.

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené