Mengalih keluar Aksara Bukan Abjad Angka dengan Cekap daripada Rentetan dalam MySQL
Dalam MySQL, membandingkan rentetan boleh menjadi tugas yang intensif prestasi. Untuk mengoptimumkan kecekapan, selalunya berfaedah untuk mengalih keluar aksara bukan abjad sebelum melakukan perbandingan. Mari kita terokai pendekatan yang berbeza untuk mencapai ini, termasuk memanfaatkan kefungsian regex dan mencipta fungsi tersuai.
MySQL 8.0 dan Lebih Tinggi: Menggunakan Regex
Dengan MySQL 8.0 atau versi yang lebih baru, anda boleh menggunakan regex (ungkapan biasa) untuk menggantikan aksara bukan abjad angka. Pernyataan SQL berikut menunjukkan pendekatan ini:
UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^0-9a-zÀ-ÿ ]', '')
Dalam pernyataan ini, regex [^0-9a-zÀ-ÿ ] sepadan dengan mana-mana aksara yang bukan nombor, huruf, ruang atau aksara beraksen.
MySQL 5.7 dan Lebih Rendah: Mencipta Tersuai Fungsi
Untuk versi MySQL terdahulu (5.7 atau lebih rendah), fungsi regex tidak tersedia. Sebagai alternatif, anda boleh mencipta fungsi tersuai yang menghilangkan aksara bukan abjad angka. Berikut ialah contoh pelaksanaan:
DROP FUNCTION IF EXISTS alphanum; DELIMITER | CREATE FUNCTION alphanum(str CHAR(255)) RETURNS CHAR(255) DETERMINISTIC BEGIN DECLARE i, len SMALLINT DEFAULT 1; DECLARE ret CHAR(255) DEFAULT ''; DECLARE c CHAR(1); IF str IS NOT NULL THEN SET len = CHAR_LENGTH(str); REPEAT BEGIN SET c = MID(str, i, 1); IF c REGEXP '[[:alnum:]]' THEN SET ret=CONCAT(ret,c); END IF; SET i = i + 1; END; UNTIL i > len END REPEAT; ELSE SET ret=''; END IF; RETURN ret; END | DELIMITER ;
Setelah dibuat, anda boleh menggunakan fungsi ini untuk menanggalkan aksara bukan abjad, seperti yang ditunjukkan di bawah:
select 'This works finally!', alphanum('This works finally!');
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Aksara Bukan Alfanumerik dengan Cekap daripada Rentetan dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!