Mysql
 sql >> база данни >  >> RDS >> Mysql

Персонализирана MySQL функция за изчисляване на разстоянието на Хаверсинус?

Да, можете да създадете съхранена функция за тази цел. Нещо подобно:

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 ;

Не мисля, че предлага някакво увеличение на скоростта, но е добро поради всички останали причини, които споменахте:четливост, многократна употреба, лекота на поддръжка (представете си, че откриете грешка след 2 години и трябва да редактирате кода след (няколко) стотици места).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. „Помощ“ Колоната с първичен ключ не може да бъде генерирана от сървъра

  2. mysql - проблем с изместването

  3. MySQLi PHP:Проверете дали SQL INSERT заявката е била напълно успешна с MySQLi

  4. Laravel Вмъкване на няколко записа от един формуляр

  5. Каква е разликата между tinyint, smallint, mediumint, bigint и int в MySQL?