sql >> Database teknologi >  >> RDS >> Mysql

En brugerdefineret MySQL-funktion til at beregne Haversine-afstanden?

Ja, du kan oprette en gemt funktion til dette formål. Noget som dette:

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 ;

Jeg tror ikke, det giver nogen hastighedsgevinster, men det er godt af alle de andre grunde, du nævner:Læsbarhed, genbrugelighed, nem vedligeholdelse (forestil dig, at du finder en fejl efter 2 år, og du skal redigere koden om nogle få) hundrede steder).




  1. Erstat flere tegn i en streng i SQL Server (T-SQL)

  2. Errcode 13 , SELECT INTO OUTFILE problem

  3. Udløsertilstand i alle rækker

  4. MySQL:Indstil brugervariabel fra resultatet af forespørgsel