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

Bagaimana untuk Memisahkan Nilai Dipisahkan Koma dalam Lajur MySQL kepada Baris Berasingan?

Mary-Kate Olsen
Lepaskan: 2024-11-28 07:32:11
asal
725 orang telah melayarinya

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

Mysql String Split

Masalah:

Anda mempunyai jadual dengan lajur yang mengandungi koma -nilai yang diasingkan. Anda ingin membahagikan nilai ini kepada baris yang berasingan, dengan setiap nilai sepadan dengan satu baris.

Sebagai contoh, diberikan jadual:

Col1 col2
1 a,b,c
2 d,e

Anda ingin mengekstrak baris berikut:

Col1 col2
1 a
1 b
1 c
2 d
2 e

Penyelesaian:

Ini boleh dicapai menggunakan MySQL prosedur tersimpan. Skrip SQL berikut merangkumi kedua-dua prosedur tersimpan dan fungsi yang digunakan:

DELIMITER $$

CREATE FUNCTION strSplit(x VARCHAR(65000), delim VARCHAR(12), pos INTEGER) 
RETURNS VARCHAR(65000)
BEGIN
  DECLARE output VARCHAR(65000);
  SET output = REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos)
                 , LENGTH(SUBSTRING_INDEX(x, delim, pos - 1)) + 1)
                 , delim
                 , '');
  IF output = '' THEN SET output = null; END IF;
  RETURN output;
END $$


CREATE PROCEDURE BadTableToGoodTable()
BEGIN
  DECLARE i INTEGER;

  SET i = 1;
  REPEAT
    INSERT INTO GoodTable (col1, col2)
      SELECT col1, strSplit(col2, ',', i) FROM BadTable
      WHERE strSplit(col2, ',', i) IS NOT NULL;
    SET i = i + 1;
    UNTIL ROW_COUNT() = 0
  END REPEAT;
END $$

DELIMITER ;
Salin selepas log masuk

Untuk menggunakan prosedur tersimpan ini, anda boleh menjalankan pertanyaan berikut:

CALL BadTableToGoodTable();
Salin selepas log masuk

Ini akan mencipta jadual baharu yang dipanggil 'GoodTable' dengan data yang dikehendaki.

Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Nilai Dipisahkan Koma dalam Lajur MySQL kepada Baris Berasingan?. 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