Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memisahkan Baris Dipisahkan Koma dalam SQL?

Bagaimana untuk Memisahkan Baris Dipisahkan Koma dalam SQL?

DDD
Lepaskan: 2025-01-14 09:25:43
asal
387 orang telah melayarinya

How to Split Comma-Separated Rows in SQL?

Pisah baris dipisahkan koma dalam SQL

Dalam SQL, anda mungkin menghadapi senario di mana anda perlu membahagikan lajur yang mengandungi nilai dipisahkan koma ke dalam baris individu. Ini boleh dicapai melalui pelbagai teknik, termasuk pertanyaan SQL tulen atau alat luaran.

Cara yang cekap untuk memisahkan baris yang dipisahkan koma dalam SQL tulen adalah dengan menggunakan gabungan fungsi SUBSTRING_INDEX() dan CROSS JOIN. SUBSTRING_INDEX() Fungsi mengekstrak subrentetan daripada rentetan tertentu berdasarkan pembatas dan kedudukan yang ditentukan. CROSS JOIN Fungsi mendarab berbilang baris daripada jadual berbeza, menghasilkan produk Cartesan.

Menggunakan fungsi ini, anda boleh menjana urutan nombor dan mengulanginya. Untuk setiap nombor, anda boleh menggunakan fungsi SUBSTRING_INDEX() untuk mengekstrak nilai dipisahkan koma yang dikehendaki daripada lajur sumber. Berikut ialah contoh pertanyaan:

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.values, ',', n.n), ',', -1) value
FROM table1 t CROSS JOIN 
(
   SELECT a.N + b.N * 10 + 1 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
    ORDER BY n
) n
WHERE n.n <= LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')) + 1;
Salin selepas log masuk

Pertanyaan ini mencipta jujukan nombor daripada 1 hingga 100 dan berulang di atasnya untuk mengekstrak nilai yang dipisahkan koma daripada setiap baris sumber. Fungsi SUBSTRING_INDEX() digunakan untuk mengekstrak nilai yang dikehendaki berdasarkan kedudukan nombor dalam jujukan. Klausa WHERE memastikan bahawa hanya nilai yang dipisahkan koma sedia ada diekstrak, mengelakkan ralat di luar sempadan.

Sebagai alternatif, anda boleh menggunakan jadual kiraan berterusan untuk menjana jujukan berangka dan memudahkan pertanyaan. Pertanyaan yang terhasil akan serupa dengan pertanyaan di atas, tetapi subkueri akan digantikan dengan rujukan kepada jadual kiraan.

Bersama-sama, teknik ini membolehkan anda membahagikan baris yang dipisahkan koma dalam SQL tanpa memerlukan pertanyaan rumit atau alatan luaran. Pilihan kaedah bergantung pada keperluan khusus aplikasi dan pertimbangan prestasi.

Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Baris Dipisahkan Koma dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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