如何删除表字段值中的括号及内部内容?正则表达式查询写法
解决方法:移除字段中的括号及括号内数值
核心思路是用正则表达式匹配所有(数字)格式的内容,将其替换为空字符串。对应的正则模式为\(\d+\),具体实现因数据库类型略有不同,以下是主流数据库的操作语句:
1. MySQL/MariaDB(8.0及以上版本)
使用REGEXP_REPLACE函数做全局替换:
-- 先查询验证结果(推荐先验证再更新) SELECT REGEXP_REPLACE(your_column, '\\(\\d+\\)', '') AS cleaned_column FROM your_table; -- 执行更新 UPDATE your_table SET your_column = REGEXP_REPLACE(your_column, '\\(\\d+\\)', '') WHERE your_column REGEXP '\\(\\d+\\)'; -- 仅更新包含目标格式的行,提升效率
2. PostgreSQL
同样使用REGEXP_REPLACE,需指定'g'参数开启全局替换:
-- 验证结果 SELECT REGEXP_REPLACE(your_column, '\(\d+\)', '', 'g') AS cleaned_column FROM your_table; -- 执行更新 UPDATE your_table SET your_column = REGEXP_REPLACE(your_column, '\(\d+\)', '', 'g') WHERE your_column ~ '\(\d+\)';
3. SQL Server(2016及以上版本)
使用REGEXP_REPLACE,通过参数控制全局替换:
-- 验证结果 SELECT REGEXP_REPLACE(your_column, '\(\d+\)', '', 1, 0) AS cleaned_column FROM your_table; -- 执行更新 UPDATE your_table SET your_column = REGEXP_REPLACE(your_column, '\(\d+\)', '', 1, 0) WHERE your_column LIKE '%(%)%';
4. Oracle
使用REGEXP_REPLACE函数:
-- 验证结果 SELECT REGEXP_REPLACE(your_column, '\(\d+\)', '') AS cleaned_column FROM your_table; -- 执行更新 UPDATE your_table SET your_column = REGEXP_REPLACE(your_column, '\(\d+\)', '') WHERE REGEXP_LIKE(your_column, '\(\d+\)');
正则表达式说明
\(:转义左括号(正则中括号是特殊字符,必须转义才能匹配实际的左括号)\d+:匹配1个或多个数字(+表示至少出现一次)\):转义右括号,匹配实际的右括号
内容的提问来源于stack exchange,提问作者Serj
相关产品推荐
相关产品推荐

