将SQL地理Lat/Long转换为VARCHAR而不会降低精度

Kru*_*ing 3 sql sql-server sqlgeography floating-point-precision floating-point-conversion

我有一个名为Location的地理专栏.我需要选择Location.Lat和Location.Long作为单个VARCHAR结果.使用以下我失去了精度:

查询:

SELECT CONVERT(VARCHAR(MAX), Location.Lat) + ' ' + CONVERT(VARCHAR(MAX), Location.Long)
Run Code Online (Sandbox Code Playgroud)

原始Location.Lat: 52.2708633333333

原来的位置.龙: -9.73093666666667

结果表格如上: 52.2709 -9.73094

我知道这是由于Lat和Long是浮点数而没有指定精度所以可能的解决方法是首先以指定的精度强制它为十进制,然后将其转换为varchar.这似乎......笨重,不得不选择随机精度

(a)如果过低或过低,则会丢失拖尾值

(b)额外的不必要的拖尾值.

请告诉我,我缺少一个函数或转换方法,以返回这些作为准确的varchar表示!

Tha*_*kou 6

你需要这样的东西:

SELECT CONVERT(VARCHAR(40),CAST(Location.Lat AS decimal(18,14))) + ' ' 
+ CONVERT(VARCHAR(40),CAST(Location.Long AS decimal(18,14))) 
Run Code Online (Sandbox Code Playgroud)