如何截断Presto中的纬度和经度而不舍入或舍弃0s?

问题描述

我遇到一个问题,我试图将纬度和经度截断为小数点后3位,但我不想ROUND,因为它会更改位置。

我尝试了CAST((TruncATE(lat * 100) / 100) AS VARCHAR),但如果这样做,它将删除结尾的零(如果纬度为-122.200,它将返回-122.2

我认为我可以使用RPAD选择字符串的一部分(在这种情况下为'。'),然后将其填充一定数量的空格(在这种情况下为3个空格。但是当我尝试{{ 1}}返回-12

任何想法都将不胜感激。谢谢!

解决方法

您应该使用正则表达式:

SELECT
 regexp_replace( CAST(-122.219980 as varchar),'\.(\d{1,3})\d*','.$1' ),regexp_replace( CAST(-122.200911 as varchar),'.$1' )

将导致:

-122.219    -122.200

如要求。