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

如何在Presto中提取列中"+"与"@"之间的字符串?

在Presto中提取目标手机号的解决方案

你可以使用Presto的regexp_extract函数结合正则表达式,精准提取+之后的连续数字序列,完美匹配你的需求:

实现SQL

SELECT 
    regexp_extract(PHONE_NUMBER, '\\+(\\d+)', 1) AS PHONE_NUMBER
FROM 
    your_table_name;

原理说明

  • regexp_extract函数用于从字符串中提取符合正则表达式匹配的部分
  • 正则表达式\\+(\\d+)的含义:
    • \\+:匹配字符串中的+符号(因+是正则特殊字符,需转义)
    • (\\d+):捕获+之后的连续数字序列(\\d匹配单个数字,+表示匹配1个或多个连续数字)
  • 参数1指定提取第一个捕获组的内容,也就是我们需要的纯数字手机号

测试验证

针对你的输入数据:

  1. ppa:+77845678021@abc.gbc443.gbc356.7kffooopppp.deu → 提取出77845678021
  2. tel:+77695002395 → 提取出77695002395
  3. dadsadas+884415002996xx2 → 提取出884415002996

完全符合你的期望输出。

如果需要处理不含+的行(避免返回null),可以用coalesce函数设置默认值:

SELECT 
    coalesce(regexp_extract(PHONE_NUMBER, '\\+(\\d+)', 1), '') AS PHONE_NUMBER
FROM 
    your_table_name;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:32:37