mysql - 如何在mysql MIN()聚合函数中比较科学计数法和小数?

标签 mysql aggregate-functions scientific-notation

如何将 mysql MIN() 应用于混合十进制值和科学记数法值。我需要在 mysql 查询中使用 MIN() 使用纬度经度方程获得最小距离。如果距离是小数,则有效。但如果某些距离太小,例如“5.89872212195226e-05”,则它无法正常工作

问题是 mysql 查询中的 MIN(4,5.89872212195226e-05) 将始终返回“4”。

这是查询部分

 MIN (
         (acos(sin((".$searchLat."*pi()/180)) * 
         sin((b_loc.locLatitude*pi()/180))+cos((".$searchLat."*pi()/180)) * 
         cos((b_loc.locLatitude*pi()/180))
         * cos(((".$searchlng."- b_loc.locLongitude)*pi()/180))))*180/pi())*60*1.1515
        ) as mindistance

有什么解决办法吗?谢谢您

最佳答案

转换为十进制应该有帮助:-

mysql> select cast( "5.89872212195226e-05"  as decimal(65,30));
+--------------------------------------------------+
| cast( "5.89872212195226e-05"  as decimal(65,30)) |
+--------------------------------------------------+
|                 0.000058987221219522600000000000 |
+--------------------------------------------------+

Example of comparison :-

mysql> select least( 4, cast("5.89872212195226e-05" as decimal(65,30)) );
+------------------------------------------------------------+
| least( 4, cast("5.89872212195226e-05" as decimal(65,30)) ) |
+------------------------------------------------------------+
|                           0.000058987221219522600000000000 |
+------------------------------------------------------------+

Example usage :-

MIN(cast( ...  as decimal(65,30)))

关于mysql - 如何在mysql MIN()聚合函数中比较科学计数法和小数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8356104/

相关文章:

javascript - PHP 更改按钮文本并相应更新数据库

python - 如何从表中获取主键

javascript - 对大整数求和

php - 如何从表中删除除最新的 10 行之外的所有行

mysql - '返回'/中止 mySql 存储过程

sql - 表有重复数据,无法让两个聚合函数在 SQL 查询中工作

r - 使用 count()、aggregate()、data.table() 或 dplyr() 汇总数据(均值、标准差)

mysql - 无法累加和 `COUNT(*)`

javascript - 正则表达式去除除科学计数法之外的所有非数字字符

r - 强制 R 输出为最多两位小数的科学记数法