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
Lepaskan: 2025-01-14 08:30:42
asal
608 orang telah melayarinya

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>
Salin selepas log masuk

Objektifnya adalah untuk menyusun semula data ini kepada:

<code>somethingA
somethingB
somethingC
somethingElseA
somethingElseB</code>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan