Penyambungan pertanyaan MySQL
Apabila menggunakan MySQL untuk membuat pertanyaan, kadangkala anda perlu menyambung berbilang medan atau medan dalam berbilang jadual Dalam kes ini, anda boleh menggunakan fungsi penyambungan rentetan yang disediakan oleh MySQL untuk beroperasi. Fungsi penggabungan rentetan yang biasa digunakan termasuk CONCAT, CONCAT_WS dan GROUP_CONCAT.
Fungsi CONCAT digunakan untuk menyambung dua atau lebih rentetan atau medan Sintaksnya ialah:
CONCAT(string1, string2, ...)
di mana, rentetan1, rentetan2 . .. mewakili rentetan atau medan yang hendak disambungkan, yang boleh menjadi pemalar, nama lajur, ungkapan, fungsi, dsb. Sebagai contoh, untuk mencari nama dan jawatan pekerja, anda boleh menggunakan pernyataan berikut:
SELECT CONCAT(last_name, ' ', first_name) AS name, job_title FROM employees
Fungsi CONCAT di sini menggabungkan nama_akhir dan nama_pertama dan memisahkannya dengan ruang sebagai nama medan dalam hasil pertanyaan. Keputusan yang dijalankan adalah seperti berikut:
name | job_title |
---|---|
Geoni Bakewell | Production Manager |
Lemuel Marmie | Shipping Manager |
Lino Uselman | Engineer |
Honey Tunney | Sales Manager |
... | ... |
Fungsi CONCAT_WS juga digunakan untuk penyambungan rentetan, tetapi tidak seperti fungsi CONCAT, ia boleh menentukan pembatas , sintaksnya ialah:
CONCAT_WS(separator, string1, string2, ...)
Antaranya, pemisah mewakili pemisah, yang boleh menjadi sebarang rentetan1, rentetan2... mewakili rentetan atau medan yang hendak disambungkan dan berbilang rentetan dipisahkan dengan koma. Contohnya, untuk mencari nama penuh dan alamat e-mel pekerja, anda boleh menggunakan penyataan berikut:
SELECT CONCAT_WS(' ', first_name, last_name) AS full_name, email FROM employees
Fungsi CONCAT_WS di sini menggunakan ruang sebagai pemisah untuk menggabungkan first_name dan last_name sebagai medan full_name dalam hasil pertanyaan . Keputusan yang dijalankan adalah seperti berikut:
full_name | |
---|---|
Geoni Bakewell | gbakewell@classicmodelcars.com |
Lemuel Marmie | lmarmie@classicmodelcars.com |
Lino Uselman | luselman@classicmodelcars.com |
Honey Tunney | htunney@classicmodelcars.com |
... | ... |
Fungsi GROUP_CONCAT digunakan untuk menyambung berbilang medan atau medan dalam berbilang rekod menjadi rentetan sintaks ialah:
GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val])
Antaranya, expr mewakili lajur atau ungkapan yang akan disambungkan; ORDER BY dan SEPARATOR masing-masing mewakili pengisihan dan pemisah, yang merupakan pilihan. Perlu diingat bahawa secara lalai, rentetan yang dikembalikan oleh fungsi GROUP_CONCAT mempunyai had panjang, yang boleh diubah dengan menetapkan parameter group_concat_max_len.
Sebagai contoh, untuk menanyakan nama semua pekerja di setiap jabatan dan menggabungkannya ke dalam rentetan yang dipisahkan dengan koma, anda boleh menggunakan pernyataan berikut:
SELECT department, GROUP_CONCAT(last_name ORDER BY employee_number ASC SEPARATOR ', ') AS employee_names FROM employees GROUP BY department
Fungsi GROUP_CONCAT di sini akan last_name mengikut kepada nombor_pekerja diisih mengikut tertib dan dipisahkan dengan koma dan ruang sebagai medan_nama_pekerja dalam hasil pertanyaan. Keputusan yang dijalankan adalah seperti berikut:
department | employee_names |
---|---|
Admin | Murphy, Patterson, Bondur, Ferrante, Firrelli |
Customer Service | Tseng, Vanauf, Von ^^^^^^ |
Finance | Bow, Firrelli, Patterson, Tseng |
... | ... |
Semasa proses pertanyaan MySQL, kita selalunya perlu menyambung berbilang medan atau medan dalam berbilang jadual. Apabila melaksanakan fungsi ini, MySQL menyediakan tiga fungsi penggabungan rentetan: CONCAT, CONCAT_WS dan GROUP_CONCAT, yang digunakan untuk menyambungkan dua atau lebih rentetan, menyambung sebarang rentetan berbilang dan memisahkannya dengan pembatas yang ditentukan dan menggabungkan berbilang medan ke dalam rentetan. Menggunakan fungsi ini boleh memudahkan pemprosesan data kami dan meningkatkan kecekapan pertanyaan.
Atas ialah kandungan terperinci penyambungan pertanyaan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!