我希望在PostgreSQL中的两个浮点整数之间执行模运算。具体来说,我希望执行角度算术,例如经过一些数学运算后,迫使角度位于区间[0,2 * pi]。
我可以看到fmod
或SQL不正式支持这样的语言。有合理的解决方法吗?
答案 0 :(得分:1)
自己创建这样的功能很简单:
CREATE FUNCTION fmod (
dividend double precision,
divisor double precision
) RETURNS double precision
LANGUAGE sql IMMUTABLE AS
'SELECT dividend - floor(dividend / divisor) * divisor';
您可以使用它来解决您的问题:
SELECT fmod(1000, 2.0 * pi());
fmod
-------------------
0.973536158445768
(1 row)
此函数可以内联,因此应该非常有效。