Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menghapuskan Aksara Bukan Angka dengan Cekap daripada Rentetan untuk Perbandingan MySQL?

Bagaimanakah Saya Boleh Menghapuskan Aksara Bukan Angka dengan Cekap daripada Rentetan untuk Perbandingan MySQL?

Linda Hamilton
Linda Hamiltonasal
2024-12-06 21:11:16469semak imbas

How Can I Efficiently Strip Non-Numeric Characters from Strings for MySQL Comparisons?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn