首页 > 解决方案 > Presto 有 translate() 之类的函数吗?

问题描述

我需要使用 Amazon Presto 将字符串列的特殊字符转换为“原始”字符。在 SQL Server 中,我可以使用 TRANSLATE 函数来做到这一点:

select
city_name,
translate(city_name,'áéíóúÁÉÍÓÚäëïöüÄËÏÖÜâêîôûÂÊÎÔÛãẽĩõũÃẼĨÕŨ','aeiouAEIOUaeiouAEIOUaeiouAEIOUaeiouAEIOU') as cityname_raw
FROM cities

那将完全返回我所需要的:

城市名

戈亚尼亚
圣保罗
Palhoça
Várzea Paulista

city_name_raw

戈亚尼亚
圣保罗
Palhoca
Varzea Paulista

Amazon Presto 中的 TRANSLATE() 函数是否有替代方法?

更新:

正如建议的那样,我使用了很多嵌套替换,结果如下:

replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(name,'ü','u'),'í','i'),'ê','e'),'ú','u'),'õ','o'),'ô','o'),'ç','c'),'é','e'),'ã','a'),'á','a'),'â','a'),'ó','o')

这不是一个漂亮的查询,但它有效。

标签: sqlprestotranslate

解决方案


Trino(fka as PrestoSQL)从 Trino 337 开始提供此功能。

https://trino.io/docs/current/functions/string.html#translate


推荐阅读