MySQL - 仅从varchar列中选择数值

Wes*_*Wes 21 mysql sql varchar numeric

请考虑下表:

create table mixedvalues (value varchar(50));

insert into mixedvalues values 
('100'),
('ABC100'),
('200'),
('ABC200'),
('300'),
('ABC300'),
('400'),
('ABC400'),
('500'),
('ABC500');
Run Code Online (Sandbox Code Playgroud)

我怎么能写一个SELECT语句将只返回数字样值

100
200
300
400
500
Run Code Online (Sandbox Code Playgroud)

SQLFiddle

Str*_*rry 82

SELECT * 
FROM mixedvalues 
WHERE value REGEXP '^[0-9]+$';
Run Code Online (Sandbox Code Playgroud)

  • `^ - ?[0-9] + $'不要忘记可能的负数. (6认同)

Pat*_*k Q 5

你很接近:

SELECT * 
FROM mixedvalues 
WHERE value > 0;
Run Code Online (Sandbox Code Playgroud)

SQLFiddle

  • 好的。谢谢。我注意到它会因为 600ABC 之类的东西而失败。 (4认同)
  • 这依赖于字母永远不会出现在数字之后的事实 (2认同)

Slo*_*der 5

SELECT * 
FROM mixedvalues 
WHERE concat('',value * 1) = value;
Run Code Online (Sandbox Code Playgroud)

参考: 在MySQL中检测value是否为数字