Maison >base de données >tutoriel mysql >Comment comparer des valeurs numériques dans MySQL malgré des caractères non numériques ?
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!