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

MySQL技术问询:如何移除字段中特定字符串并返回部分内容

解决字段末尾移除固定字符串的SQL方案

嗨,这个需求太常见啦!我之前做项目的时候也遇到过类似情况,就是要把字段末尾特定的后缀去掉,只保留前面的核心内容。针对你说的字段偶尔会附加 - New(看你示例里的格式是带前置空格的)的情况,我整理了几种主流数据库的实现方法,都很稳妥:

通用思路

核心逻辑很简单:先判断字段是否以目标后缀结尾,如果是,就截取掉后缀部分;如果不是,直接返回原字段。这样不会误改那些没有后缀的字段。


MySQL/MariaDB 实现

两种方式任你选,正则表达式更简洁,CASE判断更直观:

方法1:正则表达式替换(推荐)

SELECT 
  REGEXP_REPLACE(your_column, ' - New$', '') AS cleaned_column
FROM your_table;

这里的$是正则里的「末尾匹配」符号,确保只会替换字段最后面的 - New,不会影响字段中间可能出现的相同字符串。

方法2:CASE条件判断

SELECT 
  CASE 
    -- 注意` - New`是6个字符:空格+减号+空格+New
    WHEN RIGHT(your_column, 6) = ' - New' THEN LEFT(your_column, LENGTH(your_column) - 6)
    ELSE your_column
  END AS cleaned_column
FROM your_table;

SQL Server 实现

可以用条件判断,也可以用正则(SQL Server 2017及以上版本支持):

方法1:CASE条件判断

SELECT 
  CASE 
    WHEN your_column LIKE '% - New' THEN SUBSTRING(your_column, 1, LEN(your_column) - 6)
    ELSE your_column
  END AS cleaned_column
FROM your_table;

LIKE '% - New'用来匹配以 - New结尾的字段,再用SUBSTRING截取掉最后6个字符。

方法2:正则替换(SQL Server 2022+)

SELECT REGEXP_REPLACE(your_column, ' - New$', '') AS cleaned_column
FROM your_table;

PostgreSQL 实现

PostgreSQL对正则的支持很友好,两种方式都顺手:

方法1:正则替换

SELECT 
  REGEXP_REPLACE(your_column, ' - New$', '') AS cleaned_column
FROM your_table;

方法2:条件判断截取

SELECT 
  CASE 
    WHEN RIGHT(your_column, 6) = ' - New' THEN SUBSTRING(your_column FROM 1 FOR LENGTH(your_column) - 6)
    ELSE your_column
  END AS cleaned_column
FROM your_table;

注意事项

如果你实际的固定后缀是- New(前面没有空格),记得把匹配字符串改成'- New',对应的长度改成5,调整代码里的数字和匹配内容就行啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:17:13