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

Comment comparer efficacement des données numériques avec des caractères non numériques dans MySQL ?

DDD
DDDoriginal
2024-12-09 15:03:14770parcourir

How to Efficiently Compare Numeric Data with Non-Numeric Characters in MySQL?

Suppression des caractères non numériques dans MySQL pour faciliter les comparaisons

Pour trouver des enregistrements correspondants en fonction de la saisie numérique des utilisateurs, il est nécessaire de prendre en compte caractères non numériques dans les valeurs de la base de données. Cet article explore une fonction MySQL pour supprimer ces caractères non numériques et faciliter des comparaisons précises.

Énoncé du problème

Étant donné une table avec un champ contenant des nombres potentiellement entrecoupés de non -caractères numériques, la tâche consiste à trouver des enregistrements qui correspondent à une entrée numérique spécifique saisie par l'utilisateur.

MySQL Fonction : STRIP_NON_DIGIT

Pour résoudre ce problème, une fonction MySQL appelée STRIP_NON_DIGIT peut être créée :

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

Exemple de travail

Pour utilisez la fonction STRIP_NON_DIGIT, exécutez des requêtes SQL comme la suivant :

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

Cette requête renverra les enregistrements de la table 'foo' où la valeur dans le champ 'bar' dépourvu de caractères non numériques correspond à '12345' entré par l'utilisateur.

Avantages

Cette fonction fournit une solution simple et efficace au problème de la comparaison de valeurs numériques avec caractères non numériques dans les bases de données MySQL. Il élimine le besoin d'expressions régulières complexes ou de fonctions PHP et est facile à mettre en œuvre.

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