我有一个名为Location的地理专栏。 我需要选择Location.Lat和Location.Long作为单个VARCHAR结果。 使用以下内容我会失去精确度:
查询:
SELECT CONVERT(VARCHAR(MAX), Location.Lat) + ' ' + CONVERT(VARCHAR(MAX), Location.Long)
原始位置.Lat:
52.2708633333333
原始位置。长:
-9.73093666666667
上面的结果表单:
52.2709 -9.73094
据我所知,这是由于Lat和Long是浮点数并且未指定精度,因此可能的解决方法是首先以指定的精度将其强制为十进制,然后将其转换为varchar。这似乎......笨重,不得不选择一个随机的精度会强迫
(a)如果值太低或
,则会丢失尾随值(b)额外的不必要的尾随值。
请告诉我,我缺少一个函数或转换方法来将这些作为精确的varchar表示返回!
答案 0 :(得分:6)
你需要这样的东西:
SELECT CONVERT(VARCHAR(40),CAST(Location.Lat AS decimal(18,14))) + ' '
+ CONVERT(VARCHAR(40),CAST(Location.Long AS decimal(18,14)))
答案 1 :(得分:-1)
我想我必须在这里回答我自己的问题,因为似乎没有符合标准的功能。
要获得所需的结果,显然需要使用变通方法,例如首先使用指定的精度将其强制为十进制,然后将其转换为varchar(如果需要,可以提供Thanos答案提供的样本)