在不损失精度的情况下将 SQL 地理 Lat/Long 转换为 VARCHAR

Converting SQL Geography Lat/Long to VARCHAR without loss of precision

我有一个名为 Location 的地理列。 我需要 SELECT Location.Lat 和 Location.Long 作为单个 VARCHAR 结果。 使用以下我失去精度:

查询:

SELECT CONVERT(VARCHAR(MAX), Location.Lat) + ' ' + CONVERT(VARCHAR(MAX), Location.Long)

Original Location.Lat: 52.2708633333333

Original Location.Long: -9.73093666666667

Result form above: 52.2709 -9.73094

我知道这是由于 Lat 和 Long 是浮点数并且没有指定精度,因此可能的解决方法是强制它首先以指定的精度转换为小数,然后将其转换为 varchar。这看起来.....笨拙,并且必须选择随机精度将强制

(a) loss of trailing values if it is too low or

(b) additional unnecessary trailing values.

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

你需要这样的东西:

SELECT CONVERT(VARCHAR(40),CAST(Location.Lat AS decimal(18,14))) + ' ' 
+ CONVERT(VARCHAR(40),CAST(Location.Long AS decimal(18,14))) 

我想我必须在这里回答我自己的问题,因为似乎没有符合标准的功能。

为了获得理想的结果显然需要使用变通方法,比如首先以指定的精度将其强制为小数,然后将其转换为 varchar(如果需要,Thanos 回答提供了示例)