mysql - 按两列小数点后的特定数字选择
问题描述
我的桌子看起来像:
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 列执行此操作?在我的示例中,如果我想要两个数字(firstNumber
和secondNumber
)的点后精度为 2 位的数字,我应该得到第 1 行和第 3 行。
解决方案
随着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)
推荐阅读
- cmake - 无法构建仅针对 compile-rt(无 libgcc)链接的带有内存清理工具的 libc++?
- javascript - 开玩笑的覆盖以一种奇怪的方式仅缺少 if 条件行 - 为什么以及如何修复
- javascript - 寻找有关将 Parceljs 与 Backbone.js 一起使用的建议
- python-3.x - Python asyncio sleep 没有唤醒
- c++ - 如何使自定义 C++ 类成为 QML 类型?
- sql-server - 查找字段中特定字符的出现并检索数据直到数据开始
- if-statement - 日历日等于数字时的条件 IF
- loops - 从 List.map() 获取迭代索引
- php - 尝试使用 foreach 循环使用 MYSQL 选择一行数据
- python - 我无法在 python 中使用遗传算法得到正确答案