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

如何获取regexp_match返回结果中的第一个匹配文本值?

解法

PostgreSQL 的 text[] 数组类型可直接通过下标取值,默认数组下标从 1 开始计数,你只要在 regexp_match 表达式后追加 [1] 即可取出第一个匹配的文本值,修改后的更新语句如下:

update
  users
set
  email_base_domain = regexp_match(email, '(\w+\.\w+)$')[1]

补充说明

  • 若邮箱格式不符合正则匹配规则,regexp_match 会返回 null,取下标操作不会触发报错,最终写入的字段值也为 null
  • 如果你需要提取 @ 之后的完整域名(比如 example@mail.foo.com 提取出 mail.foo.com 而非仅 foo.com),可以将正则调整为 '@(.+)$',同样加 [1] 即可
  • 也可以直接用 substring 函数规避数组类型处理,直接返回文本结果:
    update
      users
    set
      email_base_domain = substring(email from '\w+\.\w+$')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:48:00