2015-06-24 32 views
17

Desidero chiedere quale tipo di dati di SQL Server utilizzare per l'archiviazione di latitudine e longitudine.Tipo di dati di latitudine e longitudine di SQL Server

Ecco un esempio:

Latitude: -7.39755000 
Longitude: 107.80627000 

Se il tipo di dati decimal, non salverà perché SQL Server ha detto:

Non è possibile convertire i dati numerici a numerici

come ho ricordato.

Ma se il tipo di dati era float, SQL Server convertirà 0 in modo che la latitudine sarà -7.39755000. Quindi ho capito sostituire l'ultimo 0 con 1 - 9. è la posizione non sarà accurata?

O forse attaccare con decimal, ma come evitare l'avviso?

risposta

21

DECIMAL(9,6) è quello che uso normalmente per entrambi. Se hai bisogno di maggiore precisione, prova con DECIMAL(12,9). È anche possibile utilizzare il tipo di dati GEOGRAPHY, ma richiederà più spazio e lo utilizzerei solo se sono necessarie funzionalità spaziali di SQL Server (indicizzazione, ecc.).

Per la conversione effettiva, provate questo:

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

E 'quella query per la selezione. Quando salvi i dati con il tipo di dati decimali (10,8) ha errore, si dice 'errore di overflow aritmetico che converte numerico in tipo di dati numerico' @ g2server –

+2

DECIMAL (10,8) non funziona poiché Long e Lat possono avere il formato xxx.xxxxxx. (10,8 è xx.xxxxxxxx). Quindi, prova DECIMAL (12,9) – g2server

+0

Funziona. Grazie @ g2server –

Problemi correlati