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

如何在SELECT查询中批量移除所有Yahoo邮箱地址?

批量移除字段中所有Yahoo邮箱的SQL方案

你的问题核心是REPLACE函数不支持通配符匹配,所以得用正则替换或者拆分重组的方式来批量处理。以下是主流数据库的可行方案:

MySQL/MariaDB

用REGEXP_REPLACE做全局正则替换,配合TRIM清理替换后可能残留的首尾逗号和空格:

SELECT TRIM(BOTH ', ' FROM REGEXP_REPLACE(EMAIL_ADDRESS, '[^,]+@yahoo.com,?', '')) AS filtered_emails
FROM your_table;
  • 正则[^,]+@yahoo.com,?:匹配任意以@yahoo.com结尾的邮箱,包括邮箱后的可选逗号
  • TRIM用来去掉替换后可能出现在开头或结尾的,

SQL Server(2017及以上版本)

先拆分邮箱字符串为行,过滤掉Yahoo邮箱后再重新拼接:

SELECT STRING_AGG(value, ', ') AS filtered_emails
FROM your_table
CROSS APPLY STRING_SPLIT(EMAIL_ADDRESS, ', ')
WHERE value NOT LIKE '%@yahoo.com';
  • STRING_SPLIT把逗号分隔的邮箱拆成独立行
  • 过滤掉包含@yahoo.com的行后,用STRING_AGG重新拼接成逗号分隔的字符串

PostgreSQL

方法1:正则替换

SELECT TRIM(BOTH ', ' FROM regexp_replace(EMAIL_ADDRESS, '[^,]+@yahoo.com(, |$)', '', 'g')) AS filtered_emails
FROM your_table;
  • (, |$)确保匹配邮箱后的逗号空格,或者字符串结尾的邮箱(无后续逗号)
  • 'g'标志表示全局替换所有匹配项

方法2:拆分重组

SELECT array_to_string(ARRAY(
    SELECT unnest(string_to_array(EMAIL_ADDRESS, ', '))
    WHERE unnest(string_to_array(EMAIL_ADDRESS, ', ')) NOT LIKE '%@yahoo.com'
), ', ') AS filtered_emails
FROM your_table;
  • string_to_array拆分字符串为数组,unnest转成行,过滤后用array_to_string重新拼接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:46:00