我正试图从数据库中选择所有点,如果我的角度介于另外两个角度之间...我在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
答案 0 :(得分:2)
您必须将范围拆分为两个范围,然后检查:
SELECT * FROM ... WHERE angle BETWEEN 345 AND 360
OR angle BETWEEN 0 AND 5;
答案 1 :(得分:-1)
我认为这只能通过存储过程或客户端处理来解决,然后再发送到MySQL。