Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Niestandardowa funkcja MySQL do obliczania odległości Haversine?

Tak, możesz w tym celu utworzyć zapisaną funkcję. Coś takiego:

DELIMITER //
  DROP FUNCTION IF EXISTS Haversine //
  CREATE FUNCTION Haversine
    ( myLat FLOAT
    , myLong FLOAT
    , db_lat FLOAT
    , db_long FLOAT
    , unit VARCHAR(20)
    )
    RETURNS FLOAT
      DETERMINISTIC
    BEGIN
      DECLARE haver FLOAT ;

      IF unit = 'MILES'                    --- calculations
        SET haver = ...                --- calculations

      RETURN haver ;
    END  //
DELIMITER ;

Nie sądzę, aby zapewniało to jakiekolwiek zwiększenie prędkości, ale jest dobre ze wszystkich innych powodów, o których wspominasz:czytelność, możliwość ponownego użycia, łatwość konserwacji (wyobraź sobie, że znajdujesz błąd po 2 latach i musisz edytować kod w (kilka)set miejsca).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj plik z Cp1252 na utf-8 java

  2. DAYOFYEAR() Przykłady – MySQL

  3. Czytanie częściowych danych json za pomocą MySQL i PHP

  4. Pobranie wszystkich wierszy nadrzędnych w jednym zapytaniu SQL

  5. MySQL wybiera top X rekordów dla każdej osoby w tabeli