在数据库中处理数学计算时,尤其是涉及向量角度、极坐标转换、GIS 数据时,ATAN2() 是一个非常实用的函数。YashanDB 原生支持 ATAN2(expr1. expr2),用于返回两个数值的反正切值,结果以弧度表示。
image.png
一、函数功能

ATAN2(expr1. expr2) 返回 expr1 / expr2 的反正切值,即:

atan(expr1 / expr2),但其返回结果是根据 expr1 和 expr2 的符号判断象限,范围在 [-π, π]。

与 ATAN(expr1 / expr2) 不同的是,ATAN2 可判断出结果位于哪个象限,因此在涉及方向或角度计算中更准确。

二、返回值类型

返回类型为 DOUBLE;

结果值范围:-π ~ +π(即 -3.1416 ~ +3.1416);

弧度制表达。

三、参数要求
image.png

若任一参数为 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 更强大的角度计算函数,能自动判断象限;

适用于空间分析、导航系统、科学计算等场景;

使用时注意参数类型与空值处理,确保稳定性。


数据库砖家
1 声望0 粉丝