224 votes

Détecter si la valeur est le numéro de MySQL

Est-il un moyen de détecter si une valeur est un nombre de requête MySQL?

c'est à dire. SELECT * FROM myTable WHERE isANumber(col1)=true

419voto

Corner Points 481

Vous pouvez utiliser une Expression Régulière pour trop... ce serait comme:

SELECT * FROM myTable WHERE col1 REGEXP '[0-9]+';

http://dev.mysql.com/doc/refman/5.1/en/regexp.html

300voto

RichardTheKiwi Points 58121

Cela devrait fonctionner dans la plupart des cas.

SELECT * FROM myTable WHERE concat('',col1 * 1) = col1

Il ne fonctionne pas pour les non-standard de tels chiffres

  • 1e4
  • 1.2e5
  • 123. (fuite décimal)

77voto

Dmitriy Kozmenko Points 184

Si vos données 'test', 'test0', 'test1111', '111test', '111'

SELECT * 
FROM myTable 
WHERE col1 REGEXP '^[0-9]+$';

Résultat: '111'

En regex ^ dire de commencer, et $ fin.

SELECT * 
FROM myTable 
WHERE col1 REGEXP '^[0-9]+\\.?[0-9]*$'; - for 123.12

Mais, sélectionnez tous les dossiers où un numéro:

SELECT * 
FROM myTable 
WHERE col1 REGEXP '[0-9]+';

Résultat: 'test0" et "test1111" et "111test' et '111'

2voto

Xavinou Points 717

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X