在数据库中处理数学计算时,尤其是涉及向量角度、极坐标转换、GIS 数据时,ATAN2() 是一个非常实用的函数。YashanDB 原生支持 ATAN2(expr1. expr2),用于返回两个数值的反正切值,结果以弧度表示。
一、函数功能
ATAN2(expr1. expr2) 返回 expr1 / expr2 的反正切值,即:
atan(expr1 / expr2),但其返回结果是根据 expr1 和 expr2 的符号判断象限,范围在 [-π, π]。
与 ATAN(expr1 / expr2) 不同的是,ATAN2 可判断出结果位于哪个象限,因此在涉及方向或角度计算中更准确。
二、返回值类型
返回类型为 DOUBLE;
结果值范围:-π ~ +π(即 -3.1416 ~ +3.1416);
弧度制表达。
三、参数要求
若任一参数为 NULL,则函数返回 NULL;
若参数为不支持的类型或不能成功转换为数值,则返回 Invalid number 错误。
四、典型示例
-- 示例 1:ATAN2(1,1)
SELECT ATAN2(1,1) res FROM DUAL;
-- 输出:0.7854(约 π/4)
-- 示例 2:ATAN2(1,2)
SELECT ATAN2(1,2) res FROM DUAL;
-- 输出:0.4636(约为 26.57°)
-- 示例 3:ATAN2(2,2)
SELECT ATAN2(2,2) res FROM DUAL;
-- 输出:0.7854(约 π/4)
五、常见应用场景
二维坐标系下角度计算:如 atan2(y, x) 可返回点 (x, y) 与原点连线的极角;
地图系统或导航方向:在 GPS 坐标转换、航向角计算中极为常见;
机器学习中的角度特征提取:如图像识别中的梯度方向判断;
极坐标转笛卡尔坐标的逆变换计算。
六、使用注意事项
若 expr2 = 0 且 expr1 ≠ 0.函数仍可返回 ±π/2(按标准实现);
若 expr1 = expr2 = 0.部分实现可能返回 0.也可能为 NULL;
推荐先做空值处理,避免异常传播,例如:
SELECT ATAN2(NVL(y, 0), NVL(x, 1)) FROM ...
七、小结
ATAN2 是比 ATAN 更强大的角度计算函数,能自动判断象限;
适用于空间分析、导航系统、科学计算等场景;
使用时注意参数类型与空值处理,确保稳定性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。