Maison >base de données >tutoriel mysql >Comment comparer des valeurs numériques dans MySQL malgré des caractères non numériques ?

Comment comparer des valeurs numériques dans MySQL malgré des caractères non numériques ?

DDD
DDDoriginal
2024-12-06 14:40:17424parcourir

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

MySQL : suppression des caractères non numériques à des fins de comparaison

Dans MySQL, vous pouvez filtrer les enregistrements en fonction d'un nombre spécifique saisi par un utilisateur, même si la valeur numérique stockée dans la base de données diffère en raison de caractères non numériques indésirables. Pour y parvenir, envisagez d'utiliser l'approche suivante :

La fonction STRIP_NON_DIGIT fournie ci-dessous supprime les caractères non numériques d'une chaîne d'entrée, permettant une comparaison simple des valeurs numériques :

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
$$

Avec cette fonction , vous pouvez filtrer les enregistrements comme suit :

SELECT * FROM foo WHERE STRIP_NON_DIGIT(bar) = '12345'

Cette requête récupérera les enregistrements pour lesquels la valeur numérique dans la colonne « barre » correspond '12345', même si la valeur stockée dans la base de données comprend des caractères non numériques tels que '123zz4-5'.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn