Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menukar Nilai Dipisahkan Koma ke dalam Baris Individu dalam MySQL?

Bagaimana untuk Menukar Nilai Dipisahkan Koma ke dalam Baris Individu dalam MySQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-14 08:30:42613semak imbas

How to Convert Comma-Separated Values into Individual Rows in MySQL?

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.
  • Subkueri mencipta jadual nombor sementara. Anda boleh menggantikannya dengan jadual nombor sedia ada untuk prestasi yang lebih baik jika anda melakukan operasi jenis ini dengan kerap.
  • Klausa 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn