Sebelum SQL Server 2017 muncul, tidak ada T-SQL yang setara dengan GROUP_CONCAT() MySQL fungsi. Fungsi ini memungkinkan Anda mengembalikan kumpulan hasil sebagai daftar yang dipisahkan koma, sebagai lawan dari membuat daftar setiap baris sebagai baris terpisah (seperti kumpulan hasil normal).
Sebelum SQL Server 2017, jika Anda ingin memasukkan hasil Anda ke dalam daftar yang dipisahkan koma, Anda perlu mencari solusi, mungkin menggunakan kombinasi STUFF() , FOR XML , dan PATH() .
Namun, T-SQL sekarang memiliki STRING_AGG() fungsi yang tersedia dari SQL Server 2017. Fungsi ini melakukan hal yang hampir sama dengan GROUP_CONCAT() MySQL fungsi (dengan beberapa perbedaan kecil).
Sintaks
Sintaks STRING_AGG() fungsinya seperti ini:
STRING_AGG ( expression, separator ) [ <order_clause> ]
<order_clause> ::=
WITHIN GROUP ( ORDER BY <order_by_expression_list> [ ASC | DESC ] )
Dimana expression adalah ekspresi dari jenis apa pun. Ekspresi dikonversi ke NVARCHAR atau VARCHAR jenis selama penggabungan. Jenis non-string dikonversi ke NVARCHAR ketik.
Di mana pemisah adalah ekspresi dari NVARCHAR atau VARCHAR jenis yang digunakan sebagai pemisah untuk string bersambung. Itu bisa literal atau variabel.
Klausa pesanan (opsional) terdiri dari WITHIN GROUP diikuti oleh ORDER BY ASC atau ORDER BY DESC dalam kurung. ASC mengurutkan hasil dalam urutan menaik. Ini adalah nilai default. DESC mengurutkan hasilnya dalam urutan menurun.
Contoh
Berikut adalah contoh singkat dari STRING_AGG() fungsi:
SELECT STRING_AGG(Genre, ',') AS Result FROM Genres;
Hasil:
Result -------------------------------------------- Rock,Jazz,Country,Pop,Blues,Hip Hop,Rap,Punk
Seperti yang Anda lihat, kumpulan hasil terdaftar sebagai daftar yang dipisahkan koma. Ini karena argumen kedua kami adalah koma, yang menetapkan bahwa koma harus digunakan sebagai pemisah.
Ini adalah kumpulan hasil yang sama tetapi tanpa STRING_AGG() fungsi:
SELECT Genre AS Result FROM Genres;
Hasil:
Result ------- Rock Jazz Country Pop Blues Hip Hop Rap Punk
Jadi hanya hasil yang normal.
Untuk contoh lainnya, seperti pengelompokan, penanganan nilai nol, dan pengurutan hasil, lihat Cara Mengembalikan Hasil Kueri sebagai Daftar Dipisahkan Koma di SQL Server.