web-dev-qa-db-fra.com

MySQL - Sélectionnez uniquement les valeurs numériques de la colonne varchar

Considérez le tableau suivant:

create table mixedvalues (value varchar(50));

insert into mixedvalues values 
('100'),
('ABC100'),
('200'),
('ABC200'),
('300'),
('ABC300'),
('400'),
('ABC400'),
('500'),
('ABC500');

Comment puis-je écrire une instruction select qui ne renverrait que les valeurs numériques comme

100
200
300
400
500

SQLFiddle

19
Wes
SELECT * 
FROM mixedvalues 
WHERE value REGEXP '^[0-9]+$';
79
Strawberry
SELECT * 
FROM mixedvalues 
WHERE concat('',value * 1) = value;

Référence: Détecte si la valeur est un nombre dans MySQL

5
Slowcoder

Vous étiez proche:

SELECT * 
FROM mixedvalues 
WHERE value > 0;

SQLFiddle

4
Patrick Q
SELECT * FROM mixedvalues 
WHERE value > 0 
ORDER BY CAST(value as SIGNED INTEGER) ASC
0
Jit