MYSQL - 计算角度是否在两个角度之间

时间:2016-12-31 23:04:47

标签: php mysql

我正试图从数据库中选择所有点,如果我的角度介于另外两个角度之间...我在PHP中使用了这个代码,这非常有用:

public static function angle_between($value, $ang_a, $ang_b)
{
    $n = (360 + ($value % 360)) % 360;
    $a = (3600000 + $ang_a) % 360;
    $b = (3600000 + $ang_b) % 360;

    return ($a < $b) ? ($a <= $n && $n <= $b) : ($a <= $n || $n <= $b);
}

但是我怎么能在SQL中做到这一点?我当然正在尝试这个

SELECT ... WHERE angle BETWEEN X AND Y 

但我正在使用“角度公差”,这个例子在这种情况下当然不起作用:

angle = 355;
x = (angle - 10)
y = (angle + 10);

SELECT * FROM ... WHERE angle BETWEEN 345 AND 5

// 5° cause 355°+10° = 365° = 5°

当然不介于......之间,但是......

BTW:angle_between(355, 345, 5); // true

2 个答案:

答案 0 :(得分:2)

您必须将范围拆分为两个范围,然后检查:

SELECT * FROM ... WHERE angle BETWEEN 345 AND 360
   OR angle BETWEEN 0 AND 5;

答案 1 :(得分:-1)

我认为这只能通过存储过程或客户端处理来解决,然后再发送到MySQL。