按两列小数点后的特定数字选择

zazmityj  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(295)

我的table看起来像:

id  |  firstNumber  |  secondNumber
1   |    10.1234    |    15.3321
2   |    105.338    |    185.9921
3   |    10.1255    |    15.3368
4   |    50.5050    |    99.99
5   |    10.12345   |    17.3677

**数字存储为双精度

假设我得到了两个数字的输入:例如10.123343和15.3335344。
如何选择小数点后某个数字以内的所有行?如何将两列放在一起?在我的例子中,如果我想要两个数字的精度都是2位数( firstNumber 以及 secondNumber ),我应该得到第1行和第3行。

cld4siwp

cld4siwp1#

floor(number) 你得到的是十进制数的整数部分
floor(100 * number) 您将得到需要比较的十进制数部分,以使其等于最多两个十进制数字:

select t.* from tablename t
where 
    floor(100 * t.firstnumber) = floor(100 * 10.125666)
    and
    floor(100 * t.secondnumber) = floor(100 * 15.33838)

同样可以通过 truncate() :

select t.* from tablename t
where 
    truncate(t.firstnumber, 2) = truncate(10.125666, 2)
    and
    truncate(t.secondnumber, 2) = truncate(15.33838, 2)
ctzwtxfj

ctzwtxfj2#

考虑到评论中的澄清,听起来你想要

SELECT * FROM table WHERE ROUND(firstNumber, 2) = 10.12 AND ROUND(secondNumber, 2) = 15.33;

如果希望数字匹配基于截断而不是舍入,可以使用 FLOOR 如福帕斯的回答所述。

相关问题