You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Athena中从电子邮件地址提取域名?

在Athena中从邮箱地址提取域名的替代写法

你原来的MySQL风格代码里,SUBSTRING_INDEX是Athena(基于Presto SQL)不支持的函数,而strpos和SUBSTR在Athena中是可以正常使用的。下面提供两种等价的实现方式:

方法一:使用split_part(推荐)

split_part是Athena中专门用于按分隔符拆分字符串的函数,直接替换SUBSTRING_INDEX即可实现需求:

split_part(substr(sd_ccode, strpos(sd_ccode, '@') + 1), '.', 1) as Domain

逻辑说明:

  1. substr(sd_ccode, strpos(sd_ccode, '@') + 1):截取@之后的所有字符(比如从user@example.com得到example.com)
  2. split_part(..., '.', 1):将截取后的字符串按.拆分,取第1部分(即example)

方法二:使用substr结合strpos

如果需要更底层的字符串截取控制,可以用两次substr实现:

substr(
  substr(sd_ccode, strpos(sd_ccode, '@') + 1),
  1,
  strpos(substr(sd_ccode, strpos(sd_ccode, '@') + 1), '.') - 1
) as Domain

逻辑说明:

  1. 第一步先截取@之后的字符串
  2. 找到该字符串中第一个.的位置,再从开头截取到该位置的前一位,得到目标域名

异常处理(可选)

如果存在不符合邮箱格式的记录(比如没有@或.),可以用coalesce避免返回null:

coalesce(
  split_part(substr(sd_ccode, strpos(sd_ccode, '@') + 1), '.', 1),
  sd_ccode
) as Domain

内容的提问来源于stack exchange,提问作者Muds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 15:17:42