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.