Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server Setara dengan GROUP_CONCAT()

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Klausa ORDER BY tidak valid dalam tampilan, fungsi sebaris, tabel turunan, subkueri, dan ekspresi tabel umum

  2. Apakah Kunci Asing meningkatkan kinerja kueri?

  3. SQL Query - Menggabungkan Hasil menjadi Satu String

  4. Masukkan Perbarui proc yang disimpan di SQL Server

  5. 10 SP_EXECUTESQL Gotchas yang Harus Dihindari untuk SQL Dinamis yang Lebih Baik