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