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
Susan Sarandonasal
2025-01-06 11:36:40549semak imbas

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;
  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, '%');

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);
  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);

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!

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