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

PostgreSQL 8.3 如何编写SQL替换字段最后一次出现的括号内容

解决方案

核心逻辑

要匹配最后一次出现的()包裹内容,利用正则贪婪匹配的特性:.*会尽可能匹配最长的字符串,因此可以先捕获到最后一个左括号前的所有内容,再捕获最后一个右括号后的所有内容,拼接后就是移除最后一组括号内容的结果。

正确查询语句

通用写法(适用于MySQL 8.0+、PostgreSQL、Hive、Spark SQL等绝大多数支持regexp_replace的数据库):

SELECT regexp_replace(value, '^(.*)\\([^)]*\\)(.*)$', '$1$2') AS cleaned_value FROM your_table;

如果是使用反斜杠作为捕获组引用的数据库,可以修改为:

SELECT regexp_replace(value, '^(.*)\\([^)]*\\)(.*)$', '\1\2') AS cleaned_value FROM your_table;

原写法错误说明

你之前的写法不符合正则语法规则:

  • 正则中匹配任意字符的通配符是.,*是量词,代表其前面的匹配项可以出现0次或多次,不能单独作为通配符使用
  • 转义逻辑混乱,多余的\*匹配规则和你的需求完全不匹配
  • 没有处理捕获和替换的逻辑,自然得不到预期结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:42:01