AWS Athena不支持RIGHT函数时如何截取字符串右侧指定长度字符
AWS Athena 实现末尾截取字符串(等效RIGHT函数)方案
AWS Athena 基于Trino(原Presto)引擎构建,没有内置支持RIGHT()函数,直接调用会触发Queries of this type are not supported报错,可以通过内置的字符串函数组合实现完全等效的效果。
具体实现方式
使用substr()(别名substring())搭配length()函数即可实现从字符串尾部截取指定长度字符的需求,逻辑为计算字符串总长度后,定位到距离尾部指定长度的起始位置,截取到字符串末尾即可。
对应举例的RIGHT('1313521521', 4)需求,等效可执行语句为:
-- 截取字符串最后4位,返回结果1521 SELECT substr('1313521521', length('1313521521') - 4 + 1)
如果是对表字段做截取,把常量替换为字段名即可,例如对user_phone字段截取后4位:
SELECT substr(user_phone, length(user_phone) - 4 + 1) AS phone_tail FROM your_table_name
补充说明
- 当指定的截取长度大于字符串本身总长度时,上述写法会直接返回完整原字符串,和主流SQL中RIGHT函数的表现一致,不会抛出异常。
- 如果需要实现从字符串开头截取指定长度的LEFT函数效果,直接调用
substr(目标字符串/字段, 1, 截取长度)即可,无需额外计算长度。
内容的提问来源于stack exchange,提问作者user1179317
相关产品推荐
相关产品推荐

