Menukar Data Dipisahkan Koma dalam MySQL
Panduan ini menerangkan cara menukar nilai yang dipisahkan koma dengan cekap dalam lajur MySQL kepada baris individu. Kami akan memanfaatkan fungsi MySQL dan teknik yang bijak:
Mencipta Jujukan Nombor: Mula-mula, hasilkan jadual sementara (atau gunakan yang sedia ada) yang mengandungi jujukan integer. Urutan ini hendaklah lebih besar daripada bilangan maksimum nilai dipisahkan koma dalam lajur sasaran anda. Urutan ini akan bertindak sebagai indeks untuk mengekstrak nilai individu.
Memanfaatkan SUBSTRING_INDEX
: Fungsi SUBSTRING_INDEX
adalah kunci di sini. Ia mengekstrak subrentetan berdasarkan pembatas dan kejadian tertentu. Kami akan menggunakannya dua kali, bersama-sama dengan urutan nombor, untuk mengasingkan setiap nilai.
Berikut ialah contoh yang menggambarkan pendekatan ini:
<code class="language-sql">SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.values, ',', n.n), ',', -1) AS value FROM table1 t CROSS JOIN (SELECT a.N + b.N * 10 + c.N * 100 AS n FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) c ) n WHERE n.n <= LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')) + 1;</code>
Penjelasan:
SELECT
bersarang mencipta jujukan nombor (laraskan mengikut keperluan untuk data anda).CROSS JOIN
menggabungkan jujukan ini dengan jadual anda (table1
).SUBSTRING_INDEX(t.values, ',', n.n)
mengekstrak subrentetan sehingga ke nkoma ke.SUBSTRING_INDEX(..., ',', -1)
kemudian mengekstrak nilai daripada hasil sebelumnya ke penghujung rentetan.WHERE
memastikan kami hanya memproses nilai dalam sempadan rentetan yang dipisahkan koma. Keadaan LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')) 1
mengira bilangan nilai secara dinamik.Kaedah ini secara berkesan membahagikan nilai dipisahkan koma anda kepada baris individu, menyediakan penyelesaian yang bersih dan cekap untuk manipulasi data dalam MySQL. Ingat untuk menggantikan table1
dan values
dengan nama jadual dan lajur sebenar anda.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Nilai Dipisahkan Koma ke dalam Baris dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!