从列是无符号整数的表中选择所有行的好方法是什么,例如这里是一些伪sql
SELECT * FROM mytable WHERE mycolumn IS UNSIGNED INTEGER
因此,字符串 'abc' 和像 '12.3' 和 '12.0' 这样的数字不会匹配,但像 '123' 这样的整数会匹配。
mycolumn 是 text/varchar 类型
SELECT * FROM mytable WHERE mycolumn REGEXP '^[0-9]+$'
这还不够简单吗?
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))
SELECT * FROM mytable WHERE mycolumn = FLOOR(mycolumn)
//编辑:好的,由于指定了问题,这个答案不再适合。它将拒绝 12.3 但匹配 12 AND 12.0 (结果证明没有缩进)。
修改后的问题无法用数学方法解决,唯一的方法是匹配字符,就像 Robin Castlin 所做的那样。
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