SELECT RADIANS(47) против SELECT RADIANS (47,0)

Столкнулся с этой проблемой с локатором магазина, который я строю. Функция Radians возвращает ноль (0) при выполнении SELECT RADIANS(47), но возвращает 0,83... при выполнении SELECT RADIANS(47.0).

Конечный результат приводит к тому, что расстояние, вычисленное оператором sql, равно нулю (0). Я работаю в следующей системе:

  • Название ОС Microsoft(R) Windows(R) Server 2003 Standard x64 Edition
  • Версия 5.2.3790 с пакетом обновления 2, сборка 3790
  • Модель системы VMware Virtual Platform
  • Тип системы ПК на базе x64
  • SQL Server Microsoft SQL Server 2005

Вот оператор SQL, с которым я использую функцию radians.

SELECT TOP 15 i.* FROM ( 
    SELECT [id],[storeName],[storeNumber],[latitude],[longitude],

    ROUND((3959*acos(cos(radians([latitude])) * cos(radians( 47 )) 
    * cos(radians( -122.915 ) - radians([longitude])) + sin(radians([latitude])) 
    * sin(radians( 47 )))) , 2) AS distance 

    FROM [Public].[dbo].[stores] WHERE [latitude] <> 0 AND [longitude] <> 0 
) i WHERE distance < '50' ORDER BY i.distance 

1 ответ

Работает как задумано. Согласно документации эта функция возвращает тот же тип, что и параметр. То же самое с простым оператором: выберите 5/2, 5.0/2 - возвращает 2 и 2,5

Другие вопросы по тегам