2016-12-31 95 views
1

我想選擇數據庫中的所有點只是如果我的角度在兩個另一個角度之間......我在PHP代碼並這部作品RLY偉大之間:MYSQL - 如果計算的角度是兩個角度

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

你將不得不分割你的範圍在兩個範圍,然後檢查:

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

你是對的......(min> max)?角度BETWEEN $ min和360與角度之間0和$ max:角度之間$ min和$ max –

+0

非常感謝! :-) –

-1

我認爲這隻能通過存儲過程或客戶端處理才能解決,然後再發送到MySQL。