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

如何用SQL提取字段中特定结构内的邮箱地址

嘿,这个场景我太熟了!看起来你的字段是字符串格式的JSON,虽然结构是数组,但咱们只需要精准定位到email对应的取值就能搞定,不用纠结整个数组的长度。

核心思路就是找到两个关键位置:"email"标签的结束点,以及.com的起始点,然后用字符串截取函数把中间的邮箱地址抠出来。下面给你几个常见数据库的实现方案,你可以根据自己用的数据库调整:

MySQL 版本

假设你的JSON格式是"email": "xxx@example.com"(冒号后有空格),可以这么写:

SELECT 
  SUBSTRING(
    your_json_column,
    -- 找到"email": "的位置,加上这段的长度就是邮箱的起始点
    LOCATE('"email": "', your_json_column) + LENGTH('"email": "'),
    -- 用.com的位置减去起始点,得到邮箱的长度
    LOCATE('.com', your_json_column) - (LOCATE('"email": "', your_json_column) + LENGTH('"email": "'))
  ) AS extracted_email
FROM your_table;

如果你的JSON里冒号后没有空格(比如"email":"xxx@example.com"),把LOCATE里的字符串改成'"email":"'就行。

SQL Server 版本

思路和MySQL一致,只是函数名换成CHARINDEX和LEN:

SELECT 
  SUBSTRING(
    your_json_column,
    CHARINDEX('"email": "', your_json_column) + LEN('"email": "'),
    CHARINDEX('.com', your_json_column) - (CHARINDEX('"email": "', your_json_column) + LEN('"email": "'))
  ) AS extracted_email
FROM your_table;

同样,根据实际JSON的空格情况调整搜索字符串。

额外提一句

如果你的数据库支持原生JSON类型(比如MySQL 5.7+、SQL Server 2016+),其实更推荐用JSON解析函数,比如MySQL的JSON_EXTRACT(your_json_column, '$.email'),SQL Server的JSON_VALUE(your_json_column, '$.email'),这种方法比字符串截取更稳定,不会因为JSON格式的小变动(比如键值对顺序变了)失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:19:42