2015-06-24 4 views
17

Я хочу спросить, какой тип данных SQL Server используется для хранения широты и долготы.Тип данных широты и долготы SQL Server

Вот пример:

Latitude: -7.39755000 
Longitude: 107.80627000 

Если тип decimal данных, это не спасёт, потому что SQL Server сказал:

не может преобразовать числовые данные в числовом

как я вспомнил.

Но если данные типа были float, SQL Server будет конвертировать 0, поэтому широта будет -7.39755000. Поэтому я считаю, что он заменит последний 0 на 1 - 9. будет ли это местоположение неточным?

Или, может быть, придерживаться decimal, но как избежать предупреждения?

ответ

21

DECIMAL(9,6) - это то, что я обычно использую для обоих. Если вам нужна более высокая точность, попробуйте DECIMAL(12,9). Вы также можете использовать тип данных GEOGRAPHY, но это займет больше места, и я бы использовал его только в том случае, если вам нужны пространственные функции SQL Server (индексирование и т. Д.).

Для фактического преобразования, попробуйте следующее:

CAST(@YourLat AS DECIMAL(12,9)) 
+0

ли этот запрос для выбора. Когда я сохраняю данные с типом данных десятичным (10,8), он получил ошибку, он говорит, что ошибка арифметического переполнения, преобразующая числовое значение в тип данных numeric' @ g2server –

+2

DECIMAL (10,8) не будет работать, поскольку Long и Lat могут иметь формат xxx.xxxxxx. (10,8 - xx.xxxxxxxx). Итак, попробуйте DECIMAL (12,9) – g2server

+0

Это работает. Спасибо @ g2server –

Смежные вопросы