Memisahkan Rentetan Bercantum dalam MySQL
Apabila bekerja dengan jadual pangkalan data, anda mungkin menghadapi senario di mana satu lajur mengandungi berbilang nilai yang digabungkan menjadi satu rentetan. Walaupun fungsi GROUP_CONCAT cemerlang dalam menggabungkan berbilang baris menjadi satu rentetan, operasi bertentangannya, yang melibatkan pemisahan rentetan bercantum kepada baris individu, boleh menjadi satu cabaran. Operasi ini biasanya dirujuk sebagai pengembangan atau penguraian rentetan.
Pernyataan Masalah:
Anda dibentangkan dengan jadual yang menyimpan lajur bernama "warna" yang mengandungi koma- senarai warna yang dipisahkan. Matlamat anda ialah untuk menyusun semula jadual ke dalam format yang setiap baris mewakili satu warna.
Contoh Jadual:
id | colors |
---|---|
1 | Red,Green,Blue |
2 | Orangered,Periwinkle |
Jadual Diingini Format:
id | colors |
---|---|
1 | Red |
1 | Green |
1 | Blue |
2 | Orangered |
2 | Periwinkle |
Penyelesaian:
Untuk mencapai hasil yang diinginkan, anda boleh menggunakan MySQL berikut pertanyaan:
SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', n.digit+1), ',', -1) AS color FROM colors INNER JOIN (SELECT 0 AS digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) AS n ON LENGTH(REPLACE(colors, ',', '')) <= LENGTH(colors)-n.digit ORDER BY id, n.digit
Penjelasan:
Nota: Pertanyaan ini mengandaikan bahawa setiap baris mengandungi maksimum 4 warna. Jika baris anda boleh mempunyai lebih daripada 4 warna, anda perlu mengubah suai subkueri untuk menjana jujukan nombor yang lebih besar.
Dengan melaksanakan pertanyaan ini, anda boleh memisahkan rentetan bercantum dalam jadual anda kepada baris individu dengan berkesan, membolehkan pemprosesan dan analisis lebih mudah.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan Bercantum dalam MySQL ke dalam Baris Individu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!