MySQL Group Concat for Strings

Mysql Group Concat Strings



Fungsi GROUP _CONCAT adalah fungsi agregat GROUP BY yang membolehkan anda menggabungkan nilai lajur dari beberapa baris menjadi satu bidang. Ia mengembalikan rentetan jika kumpulan kumpulan mengandungi satu atau lajur nilai nol dan mengembalikan nilai NULL jika tidak ada yang dijumpai.

Tutorial ini akan mengajar anda bagaimana menggunakan fungsi MySQL GROUP_CONCAT () untuk menggabungkan rentetan dari kumpulan dengan beberapa pilihan.







Penggunaan Asas

Seperti yang telah kami sebutkan, fungsi ini mengembalikan hasil rentetan dengan nilai nilai bukan nol yang digabungkan atau NULL jika tidak ada.



Sintaks umum adalah:



KUMPULAN_CONCAT ([ JAUH ]expr[,contoh ...]
[ PERINTAH OLEH expr
[ ASC | DESC ] [,nama_kol ...]]
[SEPARATOR str_val])

Penjelasan

Dari sintaks di atas, anda dapat melihat bahawa fungsi GROUP_CONCAT menggunakan klausa dan kekangan MySQL untuk menentukan pelbagai pilihan:





  1. JARAK: Klausa DISTINCT membantu menghilangkan nilai pendua dalam kumpulan set sebelum proses penggabungan. Pertimbangkan tutorial kami yang menerangkan MySQL DISTINCT untuk memahami cara kerjanya.
  2. PERINTAH OLEH: Klausa seterusnya adalah ORDER BY yang membantu menyusun nilai dalam urutan yang ditentukan. Urutan boleh naik atau turun. Sekiranya tidak ada pesanan yang ditentukan, MySQL memformat nilai dalam urutan menaik.
  3. SEPARATOR : Klausa ini menetapkan literal string yang dimasukkan antara nilai kumpulan semasa proses penggabungan. Secara lalai, MySQL menggunakan koma (,) untuk memisahkan nilainya.

CATATAN: Hasil rentetan yang dihasilkan oleh fungsi MySQL GROUP_CONCAT () dibatasi pada panjang nilai yang ditetapkan dalam pemboleh ubah group_concat_max_len. Nilai ini ditentukan dalam sistem dan mempunyai nilai lalai 1024. Anda boleh mengubah nilai ini secara global atau menetapkannya dalam sesi yang anda perlukan.

SET [ GLOBAL | SESI ]group_concat_max_len= nilai ;

Pertimbangkan rujukan di bawah untuk mengetahui lebih lanjut:



https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_group_concat_max_len

Cara Kerja: Contoh

Izinkan saya menggunakan contoh mudah untuk menerangkan bagaimana fungsi GROUP_CONCAT () berfungsi. Pertimbangkan jadual dengan medan untuk CHAR sebagai:

BUAT JADUAL ringkas ( nilai CAJ );

Mari kita masukkan nilai ke dalam jadual seperti yang ditunjukkan dalam pertanyaan di bawah:

MASUKKAN KE DALAM ringkas ( nilai ) NILAI ('H'),('DAN'),('THE'),('THE'),('ATAU');

Sekiranya kita menjalankan operasi GROUP_CONCAT asas pada nilai dalam jadual, kita akan mendapat hasil rentetan seperti yang ditunjukkan di bawah:

PILIH KUMPULAN_CONCAT ( JAUH nilai PERINTAH OLEH nilai ASC SEPARATOR'') DARI ringkas ;

Nilai yang dihasilkan adalah:

+ ------------------------------------------------- -------------- +
| KUMPULAN_CONCAT ( JAUH nilai PERINTAH OLEH nilai ASC SEPARATOR'') |
+ ------------------------------------------------- -------------- +
|E H L O|
+ ------------------------------------------------- -------------- +
1barisan dalam set (0.01sek)

Adakah anda mahu cara lain untuk memahami apa yang berlaku dengan keputusan yang diberikan di atas?

Kita mulakan dengan membuang semua nilai pendua kerana klausa MySQL DISTINCT yang membuang satu L.

Seterusnya, kita terus ke ORDER BY menaik mengikut urutan seperti yang ditentukan dalam (ASC), yang mengubah rentetan dalam bentuk

HELO->EHLO

Akhirnya, kami melakukan proses penggabungan menggunakan spasi sebagai pemisah untuk nilai yang ditetapkan, menghasilkan rentetan E H L O dari {H, E, L, L O}.

Contoh Kes Penggunaan

Mari kita menggunakan pangkalan data sebenar dan menggunakannya untuk menggambarkan bagaimana kita dapat melaksanakan fungsi GROUP_CONCAT (). Dalam contoh ini, kita akan menggunakan pangkalan data Sakila, dan secara khusus, jadual alamat dari pangkalan data Sakila.

Pertimbangkan sumber di bawah untuk memuat turun pangkalan data untuk contoh anda:

https://dev.mysql.com/doc/index-other.html

Dalam jadual alamat pangkalan data Sakila, anda akan mendapatkan lajur daerah. Kita dapat memisahkan semua daerah yang unik dengan paip seperti yang ditunjukkan dalam pertanyaan di bawah:

PILIH KUMPULAN_CONCAT ( JAUH daerah PERINTAH OLEH SEPARATOR daerah'|') DARI sakila.address HAD 5;

Pertanyaan di atas akan memaparkan semua daerah DISTINCT dan memerintahkannya dalam urutan menaik yang dipisahkan oleh paip.

CATATAN: Fungsi GROUP_CONCAT () adalah fungsi agregat. Oleh itu, anda mesti menentukan pernyataan ORDER BY di dalam fungsi dan bukan dalam pernyataan SELECT.

Kesimpulannya

Fungsi MySQL GROUP_CONCAT () yang dibincangkan dalam tutorial ini adalah fungsi berguna yang membolehkan anda membuat data unik, disusun, dan teratur dari jadual yang mungkin mengandungi data pendua dan tidak tersusun.

Pertimbangkan dokumen atau tutorial MySQL kami yang lain untuk mengetahui lebih lanjut.