sql - 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')
这不是一个漂亮的查询,但它有效。
解决方案
Trino(fka as PrestoSQL)从 Trino 337 开始提供此功能。
见https://trino.io/docs/current/functions/string.html#translate
推荐阅读
- android - 在运行时更新 NavDestination 标签
- git - 我正在寻找一个命令来查找修复我的提交的所有提交
- reactjs - 任何使用 Electron.js 的方式
组件到 React.js 应用程序中 - r - R:在用户制作的函数中使用中介时出现未定义的列错误
- dart - 如何在 setState 上更新 webview 的 url?
- python-3.x - 如何修复'TypeError:需要一个类似字节的对象,而不是'元组'''?
- java - 按下向上和向下箭头时,Java FX 无法识别 KeyCode.UP 或 KeyCode.Down (MacBook Pro 18 - Mojave 10.14.5)
- javascript - CkEditor5 - 无法在自定义插件中调用方法并且事件不起作用
- python-3.x - 获取 TypeError:类型集的对象不是 JSON 可序列化的,当尝试通过 REST-API 发布字典时
- base64 - 我已经编码了字符串,但我不知道它是什么类型