sql >> Databáze >  >> RDS >> Mysql

Vlastní funkce MySQL pro výpočet Haversinovy ​​vzdálenosti?

Ano, pro tento účel můžete vytvořit uloženou funkci. Něco takového:

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 ;

Nemyslím si, že nabízí žádné zvýšení rychlosti, ale je to dobré pro všechny ostatní důvody, které uvádíte:Čitelnost, opětovná použitelnost, snadná údržba (představte si, že po 2 letech najdete chybu a musíte upravit kód za (pár) stovek místa).




  1. Zápis souboru csv do databáze SQL Server pomocí pythonu

  2. SQL Server:Selhání komunikačního spojení Požadováno SSL (nepodařilo se přijmout paket)

  3. Jak extrahovat nebo převádět časová data z řetězce v SQL Server

  4. SQL Server – Udělte přihlašovací oprávnění pro přístup ke čtení do všech existujících a budoucích databází