如何选择mycolumn为整数值的所有行?

时间:2012-04-27 08:06:20

标签: mysql sql

从列中无符号整数的表中选择所有行的好方法是什么 例如,这里有一些伪sql

SELECT * FROM mytable WHERE mycolumn IS UNSIGNED INTEGER

因此字符串'abc'和数字如'12 .3'和'12 .0'会匹配,但像'123'这样的整数会匹配。

mycolumn的类型为text / varchar

4 个答案:

答案 0 :(得分:9)

SELECT * FROM mytable WHERE mycolumn REGEXP '^[0-9]+$'

这应该不够简单吗?

答案 1 :(得分:2)

select * from mytable  
where cast(mycolumn as int) = mycolumn 

Updated Example

修改

我没有看到您有varchar列。试试这个:

select * from myTable 
where cast(cast(myColumn as decimal(8,2)) as signed) = 
      cast(myColumn as decimal(8,2))

答案 2 :(得分:0)

SELECT * FROM mytable WHERE mycolumn = FLOOR(mycolumn)

//编辑:好的,在指定问题时,此答案不再适用。 它会拒绝12.3,但会匹配12和12.0(结果证明没有被标记)。

修改后的问题不能用数学方法解决,唯一的方法是匹配角色,就像Robin Castlin那样。

答案 3 :(得分:0)

create table test_int(
test_value varchar(5)
)

insert into test_int values('a')
insert into test_int values('1')
insert into test_int values('12.3')

select *
from test_int 
where isnumeric(
cast(test_value as varchar)) = 1

结果

1
12.3