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

Bagaimana untuk Memisahkan Nilai Dipisahkan Koma ke dalam Baris dalam MySQL?

Mary-Kate Olsen
Lepaskan: 2025-01-14 09:21:11
asal
690 orang telah melayarinya

How to Split Comma-Separated Values into Rows in MySQL?

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:

  1. 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.

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

Penjelasan:

  • Pernyataan 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.
  • Klausa
  • 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!

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