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

如何在SQL Server中用REPLACE函数精准移除百分比数据

用SQL精准移除百分比数据(保留其他数字)

没问题,这个需求完全可以实现——核心是用正则表达式替换,而不是单纯的REPLACE函数(因为REPLACE只能替换固定字符串,没法匹配带小数的百分比格式)。下面针对主流SQL数据库给出具体方案,完美匹配你的需求:

核心思路

我们需要匹配并移除带百分号的数值(包括小数形式,比如2.1%),同时保留其他独立数字(比如你的例子里的"Ollie 2"中的2)。关键是写出精准的正则表达式,只匹配跟%绑定的数值。

具体实现(分数据库)

1. MySQL / MariaDB

使用REGEXP_REPLACE函数,结合正则表达式匹配百分比格式,同时处理空格问题:

SELECT 
  TRIM(
    REGEXP_REPLACE(
      REGEXP_REPLACE(your_column, '\\s*\\d+(\\.\\d+)?%\\s*', ' '),
      '\\s+', ' '
    )
  ) AS cleaned_text
FROM your_table;

2. PostgreSQL

语法类似,注意正则的反斜杠不需要双重转义:

SELECT 
  TRIM(
    REGEXP_REPLACE(
      REGEXP_REPLACE(your_column, '\s*\d+(\.\d+)?%\s*', ' '),
      '\s+', ' '
    )
  ) AS cleaned_text
FROM your_table;

3. SQL Server 2017+

同样支持REGEXP_REPLACE,写法如下:

SELECT 
  TRIM(
    REGEXP_REPLACE(
      REGEXP_REPLACE(your_column, '\s*\d+(\.\d+)?%\s*', ' '),
      '\s+', ' '
    )
  ) AS cleaned_text
FROM your_table;

正则表达式说明

让我们拆解一下核心正则\s*\d+(\.\d+)?%\s*:

  • \s*:匹配0个或多个空格,处理百分比前后可能存在的空格(比如你的例子里work 1% of中的前后空格)
  • \d+:匹配1个或多个数字(百分比的整数部分,比如1、2)
  • (\.\d+)?:可选的小数部分,?表示这部分可以不存在;\.匹配小数点,\d+匹配小数位数字(比如2.1中的.1)
  • %:精准匹配百分号,确保只处理百分比数据
  • \s*:再次匹配百分比后的空格

外层的REGEXP_REPLACE(..., '\s+', ' ')是为了把替换后可能出现的连续空格(比如多个空格挤在一起)换成单个空格,最后用TRIM()去掉首尾可能多余的空格。

测试你的例子

用你的输入数据测试,结果完全符合预期:

  • 输入:Ollie is at work 1% of the time → 输出:Ollie is at work of the time
  • 输入:Ollie 2 is at work 2% of the time → 输出:Ollie 2 is at work of the time
  • 输入:Ben is at work 2.1% of the time → 输出:Ben is at work of the time

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:21:44