MySQL: Melucutkan Aksara Bukan Angka untuk Perbandingan
Dalam MySQL, anda boleh menapis rekod berdasarkan nombor tertentu yang dimasukkan pengguna, walaupun nilai berangka yang disimpan dalam pangkalan data berbeza disebabkan oleh aksara bukan angka yang tidak diingini. Untuk mencapai matlamat ini, pertimbangkan untuk menggunakan pendekatan berikut:
Fungsi STRIP_NON_DIGIT yang disediakan di bawah mengalih keluar aksara bukan digit daripada rentetan input, membolehkan perbandingan terus nilai berangka:
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 $$
Dengan fungsi ini , anda boleh menapis rekod seperti berikut:
SELECT * FROM foo WHERE STRIP_NON_DIGIT(bar) = '12345'
Pertanyaan ini akan mendapatkan semula rekod di mana nilai berangka dalam lajur 'bar' sepadan dengan '12345', walaupun nilai yang disimpan dalam pangkalan data termasuk aksara bukan angka seperti '123zz4-5'.
Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Nilai Angka dalam MySQL Walaupun Aksara Bukan Angka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!