Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membandingkan Nilai Angka dalam MySQL Walaupun Aksara Bukan Angka?

Bagaimana untuk Membandingkan Nilai Angka dalam MySQL Walaupun Aksara Bukan Angka?

DDD
DDDasal
2024-12-06 14:40:17426semak imbas

How to Compare Numeric Values in MySQL Despite Non-Numeric Characters?

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!

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