Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memisahkan Baris Dipisahkan Koma dalam 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:
<code class="language-sql">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;</code>
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!