Pour vérifier si une valeur donnée est une chaîne, nous utilisons la fonction cast(). Renvoie 0 si la valeur n'est pas un nombre, sinon renvoie une valeur numérique. De cette façon, nous pouvons vérifier si la valeur est un entier.
mysql> select cast('John123456' AS UNSIGNED);
Ce qui suit est le résultat. Indique que la valeur n'est pas un nombre, 0 est donc renvoyé.
+--------------------------------+ | cast('John123456' AS UNSIGNED) | +--------------------------------+ | 0 | +--------------------------------+ 1 row in set, 1 warning (0.00 sec)
mysql> select cast('123456' AS UNSIGNED);
Ce qui suit est le résultat. Il indique que la valeur est un nombre, donc la valeur elle-même est renvoyée.
+----------------------------+ | cast('123456' AS UNSIGNED) | +----------------------------+ | 123456 | +----------------------------+ 1 row in set (0.00 sec)
Cette logique fonctionne également bien pour les flotteurs.
Ce qui suit est une requête pour les valeurs à virgule flottante.
mysql> SELECT CAST('78.90' AS UNSIGNED);
Voici le résultat.
+---------------------------+ | CAST('78.90' AS UNSIGNED) | +---------------------------+ | 78 | +---------------------------+ 1 row in set, 1 warning (0.00 sec)
Cela fonctionne pour toutes les conditions avec n'importe quelle valeur, même les nombres à virgule flottante.
Créons un nouveau tableau.
mysql> create table CheckingIntegerDemo -> ( -> Value varchar(200) -> ); Query OK, 0 rows affected (0.88 sec)
Insérez les enregistrements dans le tableau.
mysql> insert into CheckingIntegerDemo values('John123456'); Query OK, 1 row affected (0.10 sec) mysql> insert into CheckingIntegerDemo values('123456'); Query OK, 1 row affected (0.16 sec) mysql> insert into CheckingIntegerDemo values('123.456'); Query OK, 1 row affected (0.16 sec)
Afficher tous les enregistrements.
mysql> select *from CheckingIntegerDemo;
Voici le résultat.
+------------+ | Value | +------------+ | John123456 | | 123456 | | 123.456 | +------------+ 3 rows in set (0.00 sec
Dans la sortie ci-dessus, seul 123456 est un entier et les autres ne sont pas des entiers.
Syntaxe pour vérifier si une valeur est un entier.
select yourColumnName from yourTableName where yourColumnName REGEXP '^-?[0-9]+$';
Nous utilisons des requêtes d'expressions régulières. Cela ne produira que des valeurs entières.
mysql> select Value from CheckingIntegerDemo where Value REGEXP '^-?[0-9]+$';
Ce qui suit est le résultat.
+--------+ | Value | +--------+ | 123456 | +--------+ 1 row in set (0.00 sec)
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!