首页 > 解决方案 > 按两列小数点后的特定数字选择

问题描述

我的桌子看起来像:

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

**数字存储为 Double

假设我输入了 2 个数字:例如 10.123343 和 15.3335344 进行比较。

如何选择所有具有相同数字的行,直到小数点后的某个数字?以及如何一起为 2 列执行此操作?在我的示例中,如果我想要两个数字(firstNumbersecondNumber)的点后精度为 2 位的数字,我应该得到第 1 行和第 3 行。

标签: mysqlsql

解决方案


随着floor(number)你得到一个十进制数的整数部分,
floor(100 * number)得到你需要比较相等的十进制数部分,最多 2 个十进制数字:

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)

推荐阅读