2015-06-24 120 views
17

我想問一下用什麼SQL Server數據類型來存儲緯度和經度。SQL Server經緯度數據類型

下面是一個例子:

Latitude: -7.39755000 
Longitude: 107.80627000 

如果數據類型decimal,它不會保存,因爲SQL Server說:

不能數字數據轉換爲數字

我記住。

但是,如果類型數據爲float,SQL Server將轉換0,因此緯度將爲-7.39755000。所以我想通過1 - 9取代最後的0。它的位置會不準確嗎?

或者可能堅持decimal,但如何避免警告?

回答

21

DECIMAL(9,6)是我通常用於這兩個。如果您需要更高精度,請嘗試DECIMAL(12,9)。您也可以使用數據類型GEOGRAPHY,但它會佔用更多空間,並且如果您需要SQL Server空間要素(索引等),我只會使用它。

對於實際的轉換,試試這個:

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

難道查詢選擇。當我用數據類型十進制(10,8)保存數據時,它得到錯誤,它說'算術溢出錯誤轉換爲數值數據類型數字'@ g2server –

+2

十進制(10,8)將無法工作,因爲長和緯可以有格式xxx.xxxxxx。 (10,8是xx.xxxxxxxx)。所以,試試DECIMAL(12,9) – g2server

+0

它的工作。謝謝@ g2server –