sql - postgresql:输入超出范围
问题描述
我正在尝试创建一个查询来获取 2 个位置之间的距离。
https://developers.google.com/maps/solutions/store-locator/clothing-store-locator
来自链接的示例:
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
基于示例链接,我创建了以下查询。
select ( 6371 * acos( cos( radians(3.139003) ) * cos( radians( 3.10726 ) ) * cos( radians( 101.60671 ) - radians(101.68685499999992) ) + sin( radians(3.139003) ) * sin( radians( 101.60671 ) ) ) ) AS distance from requests
位置1:3.139003、101.68685499999992
位置 2:3.10726、101.60671
但是,查询总是失败,输入超出范围,这似乎是由于 acos。
任何人都可以为此提供一些指示吗?
解决方案
是的,这是相当微不足道的。
最左边acos
函数的参数是
cos( radians(3.139003) )
* cos( radians( 3.10726 ) )
* cos( radians( 101.60671 )
- radians(101.68685499999992) )
+ sin( radians(3.139003) ) * sin( radians( 101.60671 ) )
计算结果为 1.05066948199501。
但是 [-1,1] 范围之外的任何东西都不是acos
.
推荐阅读
- java - 有没有办法在 android studio 中修复我的屏幕网格?
- asp.net - 在 selectedindexchanged 上的 gridview 中获取单选按钮列表的选定值
- function - 有没有更好的方法在 PROC SQL 中使用嵌套函数?
- python - 扭曲的 deferToThread addCallback 调用
- mysql - 你如何在另一个文件中使用 MySQL 的源命令
- office-ui-fabric - @fluentui/react-northstar@0.49.0 中的网格响应问题
- php - Laravel SQLSTATE [42S22]:找不到列
- php - 如何更改初始分页十月 CMS
- c++ - 在 C++ 中的堆栈上创建实例时如何保持多态性?
- java - DatabaseException:无法将 java.lang.String 类型的对象转换为 Models.OrderDetails 类型