Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menghapuskan Aksara Bukan Angka dengan Cekap daripada Rentetan untuk Perbandingan MySQL?
Melucutkan Aksara Bukan Angka dalam Perbandingan Rentetan MySQL
Apabila membandingkan rentetan dalam MySQL, selalunya perlu mengalih keluar aksara bukan angka yang boleh mengganggu perlawanan. Untuk melaksanakan operasi ini, kami tidak boleh bergantung pada fungsi PHP seperti preg_replace terus dalam pertanyaan MySQL.
Sebaliknya, kami boleh mencipta fungsi MySQL tersuai untuk menanggalkan aksara bukan digit daripada rentetan tertentu. Berikut ialah contoh fungsi:
DROP FUNCTION IF EXISTS STRIP_NON_DIGIT; DELIMITER $$ CREATE FUNCTION STRIP_NON_DIGIT(input VARCHAR(255)) RETURNS VARCHAR(255) BEGIN DECLARE output VARCHAR(255) DEFAULT ''; DECLARE iterator INT DEFAULT 1; WHILE iterator < (LENGTH(input) + 1) DO IF SUBSTRING(input, iterator, 1) IN ( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ) THEN SET output = CONCAT(output, SUBSTRING(input, iterator, 1)); END IF; SET iterator = iterator + 1; END WHILE; RETURN output; END $$
Fungsi ini mengambil input VARCHAR dan melelaran melalui setiap aksara, menyemak sama ada ia adalah digit. Jika ya, aksara itu dilampirkan pada pembolehubah keluaran.
Dengan adanya fungsi ini, kami boleh menanggalkan aksara bukan angka daripada rentetan dan menggunakannya untuk membandingkan dengan nilai angka dalam pertanyaan MySQL kami, seperti berikut :
SELECT * FROM foo WHERE STRIP_NON_DIGIT(bar) = '12345'
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghapuskan Aksara Bukan Angka dengan Cekap daripada Rentetan untuk Perbandingan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!