SQL Server纬度和经度数据类型

Bob*_*y Z 23 sql-server google-maps

我想问一下用于存储纬度和经度的SQL Server数据类型.

这是一个例子:

Latitude: -7.39755000
Longitude: 107.80627000
Run Code Online (Sandbox Code Playgroud)

如果数据类型decimal,它将无法保存,因为SQL Server说:

无法将数字数据转换为数字

我记得.

但是如果类型数据是float,SQL Server将转换0所以纬度将是-7.39755000.所以我想它取代上次01 - 9.它的位置会不准确吗?

或者坚持decimal,但如何避免警告?

g2s*_*ver 34

DECIMAL(9,6)是我通常用于两者的东西.如果你需要更高的精度,那就试试吧DECIMAL(12,9).

您也可以使用GEOGRAPHY数据类型,但它会占用更多空间,如果您需要SQL Server空间功能(索引等),我只会建议这样做.

对于实际转换,请尝试以下方法:

CAST(@YourLat AS DECIMAL(12,9))
Run Code Online (Sandbox Code Playgroud)

  • @g2server Latitude 的范围是 `[-90;90]`,因此它可以存储在 `DECIMAL(8,6)` 中。经度的范围是 `[-180;180]`,所以它应该存储在 `DECIMAL(9,6)` 中。为了保持一致性,我认为应该首选“DECIMAL(9,6)”。 (5认同)
  • DECIMAL(10,8)将无效,因为Long和Lat的格式为xxx.xxxxxx.(10,8是xx.xxxxxxxx).所以,试试DECIMAL(12,9) (2认同)