Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memisahkan Rentetan Bercantum dalam MySQL ke dalam Baris Individu?

Bagaimana untuk Memisahkan Rentetan Bercantum dalam MySQL ke dalam Baris Individu?

DDD
Lepaskan: 2024-12-14 03:15:09
asal
871 orang telah melayarinya

How to Split Concatenated Strings in MySQL into Individual Rows?

Memisahkan Rentetan Bercantum dalam MySQL

Apabila bekerja dengan jadual pangkalan data, anda mungkin menghadapi senario di mana satu lajur mengandungi berbilang nilai yang digabungkan menjadi satu rentetan. Walaupun fungsi GROUP_CONCAT cemerlang dalam menggabungkan berbilang baris menjadi satu rentetan, operasi bertentangannya, yang melibatkan pemisahan rentetan bercantum kepada baris individu, boleh menjadi satu cabaran. Operasi ini biasanya dirujuk sebagai pengembangan atau penguraian rentetan.

Pernyataan Masalah:

Anda dibentangkan dengan jadual yang menyimpan lajur bernama "warna" yang mengandungi koma- senarai warna yang dipisahkan. Matlamat anda ialah untuk menyusun semula jadual ke dalam format yang setiap baris mewakili satu warna.

Contoh Jadual:

id colors
1 Red,Green,Blue
2 Orangered,Periwinkle

Jadual Diingini Format:

id colors
1 Red
1 Green
1 Blue
2 Orangered
2 Periwinkle

Penyelesaian:

Untuk mencapai hasil yang diinginkan, anda boleh menggunakan MySQL berikut pertanyaan:

SELECT
  id,
  SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', n.digit+1), ',', -1) AS color
FROM
  colors
  INNER JOIN
  (SELECT 0 AS digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) AS n
  ON LENGTH(REPLACE(colors, ',', '')) <= LENGTH(colors)-n.digit
ORDER BY
  id,
  n.digit
Salin selepas log masuk

Penjelasan:

  1. SUBSTRING_INDEX(SUBSTRING_INDEX(warna, ',', n.digit 1), ',', -1 ): Ungkapan ini digunakan untuk mengekstrak warna individu daripada rentetan bercantum. Ia mula-mula menggunakan SUBSTRING_INDEX untuk mengekstrak subrentetan bermula daripada koma pertama selepas koma n.digit-th dan berakhir pada koma seterusnya. Kemudian, ia mengeluarkan subrentetan bermula dari koma kedua dan berakhir pada hujung rentetan. Ini secara berkesan memilih satu warna.
  2. (PILIH 0 SEBAGAI digit KESATUAN SEMUA PILIH 1 KESATUAN SEMUA PILIH 2 KESATUAN SEMUA PILIH 3): Subkueri ini menjana urutan nombor dari 0 hingga 3, yang mewakili kedudukan setiap warna dalam rentetan bercantum.
  3. PADA PANJANG(GANTIKAN(warna, ',', '')) <= LENGTH(colors)-n.digit: Syarat gabungan ini memastikan bahawa pertanyaan hanya mengembalikan baris yang bilangan warna (dibataskan dengan koma) adalah kurang daripada atau sama dengan 4.
  4. PESANAN OLEH id, n.digit: Ini memastikan bahawa keputusan diisih mengikut kedua-dua id dan kedudukan warna dalam warna lajur.

Nota: Pertanyaan ini mengandaikan bahawa setiap baris mengandungi maksimum 4 warna. Jika baris anda boleh mempunyai lebih daripada 4 warna, anda perlu mengubah suai subkueri untuk menjana jujukan nombor yang lebih besar.

Dengan melaksanakan pertanyaan ini, anda boleh memisahkan rentetan bercantum dalam jadual anda kepada baris individu dengan berkesan, membolehkan pemprosesan dan analisis lebih mudah.

Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan Bercantum dalam MySQL ke dalam Baris Individu?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan