SQL рд╕рд░реНрд╡рд░ рдореЗрдВ рджреЛ рдЕрдХреНрд╖рд╛рдВрд╢/рджреЗрд╢рд╛рдВрддрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХреЛрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ
рд╕рдВрджрд░реНрдн
рджреЛ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╣рд╛рдБ рдХреБрдЫ рдЕрдЪреНрдЫреЗ рд▓реЗрдЦ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рдкреГрд╖реНрда рдХреЗрд╡рд▓ рдХреЛрдб рдореЗрдВ рдЬрд╛рдПрдЧрд╛ред
рдПрдХ рдЧреЛрд▓реЗ рдкрд░ рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рд╣рд╛рд╡реЗрд░реНрд╕рд┐рди рдлреЙрд░реНрдореВрд▓рд╛ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдпрд╣ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рд╛рдордЧреНрд░реА рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╣рдордиреЗ рдЗрд╕ рдХреЛрдб рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдСрдирд▓рд╛рдЗрди рдкрд╛рдпрд╛ рдФрд░ рдЗрд╕реЗ рдПрдХ SQL рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореАрд▓ рдпрд╛ рдХрд┐рд▓реЛрдореАрдЯрд░ рдкреВрдЫрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред
рдпрд╣ рдХреЗрд╡рд▓ "рдХреМрд╡рд╛ рдордХреНрдЦрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ" рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рдПрдХ рдРрдк рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЖрдИрдлреЛрди рдкрд░ рдмрдирд╛рдпрд╛ рдерд╛ рдФрд░ рджреВрд░рд┐рдпрд╛рдВ рд╣рд╛рдЬрд┐рд░ рдереАрдВред
SQL Server
CREATE FUNCTION CoordinateDistanceMiles(@Latitude1 float,@Longitude1 float,@Latitude2 float,@Longitude2 float,@Distance NVARCHAR(10))RETURNS FLOATAS BEGIN-- CONSTANTSDECLARE @EarthRadiusInMiles FLOAT=(CASE @Distance WHEN 'Miles' THEN 3959 WHEN 'Kilometers' THEN 6371 ELSE 0 END);DECLARE @PI FLOAT=PI();DECLARE @lat1Radians FLOAT=@Latitude1 * @PI / 180DECLARE @long1Radians FLOAT=@Longitude1 * @PI / 180;DECLARE @lat2Radians FLOAT=@Latitude2 * @PI / 180;DECLARE @long2Radians FLOAT=@Longitude2 * @PI / 180;RETURN Acos(Cos(@lat1Radians)*Cos(@long1Radians)*Cos(@lat2Radians)*Cos(@long2Radians)+Cos(@lat1Radians)*Sin(@long1Radians)*Cos(@lat2Radians)*Sin(@long2Radians)+Sin(@lat1Radians)*Sin(@lat2Radians)) * @EarthRadiusInMiles;END