Memisahkan Rentetan dalam MySQL dengan Fungsi strSplit
Tidak seperti soalan dalam urutan pendua, soalan ini menanyakan secara khusus cara membahagikan yang dipisahkan koma lajur rentetan kepada berbilang baris. Untuk mencapai matlamat ini, MySQL menyediakan prosedur tersimpan serba boleh yang memanfaatkan fungsi strSplit().
Fungsi strSplit() memecahkan rentetan (x) yang diberikan berdasarkan pembatas (delim) dan kedudukan (pos) yang ditentukan . Ia melakukannya dengan mengekstrak subrentetan daripada pos kedudukan rentetan yang dibataskan, menggantikan pembatas dengan rentetan kosong dan mengembalikan subrentetan yang terhasil.
Untuk menggambarkan, mari kita pertimbangkan jadual input:
Col1 | Col2 |
---|---|
1 | a,b,c |
2 | d,e |
Untuk mengubah ini menjadi output yang diingini:
Col1 | Col2 |
---|---|
1 | a |
1 | b |
1 | c |
2 | d |
2 | e |
Kami mentakrifkan Prosedur tersimpan BadTableToGoodTable() seperti berikut:
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 $$
Di sini, kami melingkari setiap aksara dalam rentetan yang dipisahkan koma Col2 menggunakan pernyataan REPEAT, mengekstrak subrentetan menggunakan strSplit() dan memasukkannya ke dalam yang baharu table (GoodTable).
Dengan mengikuti langkah ini, kami boleh memisahkan rentetan dalam MySQL dengan berkesan, membolehkan kami untuk membentuk semula lajur yang dipisahkan koma kepada struktur data yang lebih ternormal.
Atas ialah kandungan terperinci Bagaimanakah Fungsi strSplit MySQL Boleh Mengubah Rentetan Dipisahkan Koma kepada Berbilang Baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!