【问题标题】:Does Presto have a function like translate()?Presto 有 translate() 之类的函数吗?
【发布时间】:2020-07-13 08:05:14
【问题描述】:

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

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

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

城市名称

戈亚尼亚
圣保罗
帕洛萨
瓦尔泽亚·保利斯塔

city_name_raw

戈亚尼亚
圣保罗
帕洛卡
瓦尔泽亚·保利斯塔

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')

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

【问题讨论】:

  • 总是可以使用大量的嵌套替换
  • 是的,这似乎是唯一的选择。这正是我的工作方式。这不是一个漂亮的查询,但它有效。感谢您的意见!

标签: sql presto translate


【解决方案1】:

Trino(f.k.a as PrestoSQL)自 Trino 337 起提供此功能。

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

【讨论】:

  • 这是一个令人震惊的赤字。当这样的功能存在于如此多需要 ETL 的环境中时,他们怎么会忘记实现这样的东西?
  • @MichaelTuchman 我更新了答案。自我最初的回答以来,该功能已经实现。感谢您帮助我保持最新状态。
猜你喜欢
  • 1970-01-01
  • 2021-11-11
  • 2018-05-16
  • 2018-06-11
  • 2011-05-22
  • 2020-07-21
  • 2017-12-17
  • 1970-01-01
  • 2013-01-14
相关资源
最近更新 更多