Penapisan Aksara Cekap dalam Rentetan MySQL
Apabila membandingkan rentetan untuk kecekapan, adalah penting untuk menghapuskan aksara angka bukan alfa. Daripada menggunakan berbilang fungsi REPLACE, pertimbangkan untuk menggunakan penyelesaian alternatif.
MySQL 8.0 dan Ke Atas
MySQL 8.0 menyokong penggantian ungkapan biasa, membolehkan anda menggantikan aksara bukan abjad dengan kosong rentetan:
UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^0-9a-zÀ-ÿ ]', '')
MySQL 5.7 dan Di Bawah
Memandangkan ungkapan biasa tidak disokong dalam MySQL 5.7, anda boleh mencipta fungsi tersuai seperti berikut:
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 ;
Menggunakan fungsi ini, anda boleh melakukan penapisan aksara sebagai berikut:
select 'This works finally!', alphanum('This works finally!');
Output:
+---------------------+---------------------------------+ | This works finally! | alphanum('This works finally!') | +---------------------+---------------------------------+ | This works finally! | Thisworksfinally | +---------------------+---------------------------------+
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menapis Aksara Bukan Alfanumerik dengan Cekap daripada Rentetan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!