Menukar Nilai Dipisahkan Koma kepada Baris Individu dalam MySQL
Panduan ini menunjukkan cara menukar nilai dipisahkan koma dalam lajur MySQL kepada baris individu. Katakan anda mempunyai jadual dengan lajur yang mengandungi data dipisahkan koma seperti ini:
<code>somethingA,somethingB,somethingC somethingElseA, somethingElseB</code>
Objektifnya adalah untuk menyusun semula data ini kepada:
<code>somethingA somethingB somethingC somethingElseA somethingElseB</code>
Pertanyaan SQL ini mencapai transformasi ini:
<code class="language-sql">SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.values, ',', n.n), ',', -1) value FROM table1 t CROSS JOIN ( SELECT a.N + b.N * 10 + 1 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 ORDER BY n ) n WHERE n.n <= LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')) + 1;</code>
Penjelasan:
Pertanyaan ini bijak menggunakan jadual nombor yang dijana secara dinamik (subkueri) dan fungsi SUBSTRING_INDEX()
. SUBSTRING_INDEX()
mengekstrak subrentetan berdasarkan pembatas. Jadual nombor menyediakan indeks untuk setiap nilai yang dipisahkan koma. Klausa WHERE
memastikan pertanyaan hanya memproses nilai sehingga bilangan sebenar elemen dipisahkan koma dalam setiap baris.
Isi Penting:
SUBSTRING_INDEX(string, delimiter, count)
: Fungsi ini penting. string
ialah input, delimiter
ialah koma dan count
menentukan kejadian pembatas untuk digunakan. count
daripada -1
mendapat segalanya selepas kejadian terakhir pembatas.WHERE
melaraskan bilangan baris yang dikembalikan secara dinamik berdasarkan kiraan koma dalam rentetan asal, mengelakkan ralat.Kaedah ini membahagikan nilai yang dipisahkan koma dengan berkesan kepada baris individu, menghasilkan set data yang lebih bersih dan terurus.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Nilai Dipisahkan Koma ke dalam Baris Individu dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!