Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memisahkan Senarai Dipisahkan Koma dalam MySQL dengan Cekap?

Bagaimana untuk Memisahkan Senarai Dipisahkan Koma dalam MySQL dengan Cekap?

Susan Sarandon
Lepaskan: 2025-01-06 11:36:40
asal
518 orang telah melayarinya

How to Split Comma-Separated Lists in MySQL Efficiently?

Memisahkan Senarai Dipisahkan Koma dalam MySQL

Untuk mengendalikan data tidak normal dengan senarai dipisahkan koma, terdapat dua pendekatan: menyertai atau memasukkan ke dalam meja baharu.

Sertai Pendekatan:

  1. Buat jadual sementara yang mengandungi nilai unik daripada senarai yang dipisahkan koma:
CREATE TEMP TABLE UNIQUE_MATERIALS AS
SELECT DISTINCT TRIM(MATERIAL) AS MATERIAL FROM PART_TABLE;
Salin selepas log masuk
  1. Sertai jadual asal dengan jadual sementara pada lajur BAHAN untuk mengembangkan senarai menjadi baris:
SELECT p.part_id, m.material_id
FROM PART_TABLE p
JOIN UNIQUE_MATERIALS m ON p.MATERIAL LIKE CONCAT('%', m.MATERIAL, '%');
Salin selepas log masuk

Sisipkan Pendekatan:

  1. Gunakan arahan REPLACE untuk memasukkan baris baharu ke dalam jadual baharu (SPLIT_MATERIALS):
CREATE TABLE SPLIT_MATERIALS (part_id INT, material_id INT);
INSERT INTO SPLIT_MATERIALS (part_id, material_id)
VALUES
  (339, 1),
  (339, 2),
  (970, 2);
Salin selepas log masuk
  1. Isi jadual baharu dengan mengulangi setiap nilai yang dipisahkan koma dan memasukkan baris:
INSERT INTO SPLIT_MATERIALS (part_id, material_id)
SELECT part_id, STR_TO_INT(TRIM(SUBSTR(MATERIAL, pos - 1, INSTR(MATERIAL, ',', pos) - pos + 1)))
FROM PART_TABLE,
  (SELECT @pos := 1) AS vars,
  (SELECT INSTR(MATERIAL, ',')) AS tmp
WHERE STR_TO_INT(SUBSTR(MATERIAL, @pos - 1, INSTR(MATERIAL, ',', @pos) - @pos + 1)) IS NOT NULL
  AND INSTR(MATERIAL, ',', @pos) > 0
GROUP BY part_id, STR_TO_INT(SUBSTR(MATERIAL, @pos - 1, INSTR(MATERIAL, ',', @pos) - @pos + 1))
ORDER BY part_id, SUBSTR(MATERIAL, @pos - 1, INSTR(MATERIAL, ',', @pos) - @pos + 1);
Salin selepas log masuk

Setelah jadual baharu diisi, ia boleh digabungkan dengan jadual asal untuk pertanyaan yang memerlukan nilai yang diasingkan.

Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Senarai Dipisahkan Koma dalam MySQL dengan Cekap?. 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