Μέθοδος 1:Χρήση `string_agg` (sql server 2017 και αργότερα)
Αυτή είναι η απλούστερη και αποτελεσματικότερη προσέγγιση για τις σύγχρονες εκδόσεις SQL Server:
`` sql
Επιλέξτε string_agg (Yourcolumn, ',') ως concatenatedValues
Από το σας.
`` `
Αντικαταστήστε το `yourtable` και το` yourcolumn 'με τα πραγματικά ονόματα του πίνακα και της στήλης σας. Αυτό θα επιστρέψει μία σειρά με όλες τις τιμές από το `yourcolumn 'concatenen σε μια ενιαία συμβολοσειρά, χωρισμένη από κόμματα.
Μέθοδος 2:Χρήση `για τη διαδρομή XML` (SQL Server 2016 και νωρίτερα)
Για παλαιότερες εκδόσεις SQL Server, το «για το XML Path» παρέχει παρόμοια λειτουργικότητα:
`` sql
Επιλέξτε Stuff ((
Επιλέξτε ',' + Yourcolumn
Από το σας
Για τη διαδρομή XML ('')
), 1, 1, '') ως concatenatedValues.
`` `
Αυτή η μέθοδος χρησιμοποιεί ένα υποπαράγονο για να συγκρατήσει τις τιμές με κόμματα και στη συνέχεια η λειτουργία `Stuff` αφαιρεί το κορυφαίο κόμμα.
Παράδειγμα:
Ας πούμε ότι έχετε ένα τραπέζι με την ονομασία `υπαλλήλους 'με μια στήλη που ονομάζεται` Employeename`:
| Employeename |
| --- | --- |
| John Doe |
| Jane Smith |
| David Lee |
Χρησιμοποιώντας `string_agg`:
`` sql
Επιλέξτε string_agg (Employeename, ',') ως Employeenames
Από τους υπαλλήλους.
`` `
Αυτό θα επέστρεφε:
| Employeenames |
| --- | --- |
| John Doe, Jane Smith, David Lee |
Χρήση `για τη διαδρομή XML ':
`` sql
Επιλέξτε Stuff ((
Επιλέξτε ',' + Employeename
Από τους εργαζόμενους
Για τη διαδρομή XML ('')
), 1, 1, '') ως Employeenames.
`` `
Αυτό θα επέστρεφε επίσης:
| Employeenames |
| --- | --- |
| John Doe, Jane Smith, David Lee |
Σημαντικές εκτιμήσεις:
* Τιμές NULL: Και οι δύο μέθοδοι χειρίζονται τις τιμές `null 'αγνοώντας τους αποτελεσματικά. Εάν πρέπει να αντιπροσωπεύετε τις τιμές `null` στη συνολική σας συμβολοσειρά (π.χ. χρησιμοποιώντας έναν ειδικό δείκτη όπως το" null "), θα πρέπει να προσθέσετε μια δήλωση` case` εντός της συσσωμάτωσης. Για παράδειγμα, με `string_agg`:
`` sql
Επιλέξτε string_agg (περίπτωση όταν το Employeename είναι null τότε 'null' else hompaleename end ',') ως Employeenames
Από τους υπαλλήλους.
`` `
* Τύπος δεδομένων: Βεβαιωθείτε ότι ο τύπος δεδομένων της στήλης σας είναι συμβατός με τη συγκόλληση συμβολοσειρών. Εάν είναι απαραίτητο, χρησιμοποιήστε το `cast` ή` μετατρέψτε 'για να μετατρέψετε τη στήλη σε κατάλληλο τύπο δεδομένων (π.χ. `varchar').
* απόδοση: Για πολύ μεγάλα τραπέζια, το `string_agg` είναι γενικά πιο εκτεταμένο από το` για το μονοπάτι XML '.
Επιλέξτε τη μέθοδο που είναι κατάλληλη για την έκδοση SQL Server. Το `string_agg` είναι η προτιμώμενη και πιο ευανάγνωστη επιλογή εάν η έκδοση SQL Server την υποστηρίζει.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα