列が符号なし整数であるテーブルからすべての行を選択する良い方法は何でしょう。たとえば、ここにいくつかの疑似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)
//編集: OK、質問が指定されているため、この回答は適合しません。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