it-swarm.com.de

MySQL - Wählen Sie nur numerische Werte aus der varchar-Spalte

Betrachten Sie die folgende Tabelle:

create table mixedvalues (value varchar(50));

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

Wie kann ich eine select-Anweisung schreiben, die nur die numerischen Werte zurückgibt wie

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;

Referenz: Ermitteln, ob der Wert in MySQL eine Zahl ist

5
Slowcoder

Du warst nah :

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