从列中无符号整数的表中选择所有行的好方法是什么 例如,这里有一些伪sql
SELECT * FROM mytable WHERE mycolumn IS UNSIGNED INTEGER
因此字符串'abc'和数字如'12 .3'和'12 .0'会不匹配,但像'123'这样的整数会匹配。
mycolumn的类型为text / varchar
答案 0 :(得分:9)
SELECT * FROM mytable WHERE mycolumn REGEXP '^[0-9]+$'
这应该不够简单吗?
答案 1 :(得分:2)
select * from mytable
where cast(mycolumn as int) = mycolumn
我没有看到您有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