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

如何在SQL中将这类转义Unicode字符替换为空格

SQL替换不可见Unicode控制字符并清理冗余标签方案

需求场景

原始字符串(示例A):

My Name is <strong></strong>Vinaykumar. I am <strong></strong>From AndhraPradesh. I have completed my B.tech in Osmania University

目标字符串(示例B):

My Name is Vinaykumar. I am From AndhraPradesh. I have completed my B.tech in Osmania University

需要实现:将字符串中的不可见Unicode控制字符(如U+001A)替换为空格,同时移除包裹该字符的<strong>冗余标签。

实现步骤与代码

1. 定位目标字符

示例中的是U+001A(ASCII替换字符,SUB),属于非打印控制字符,可通过Unicode编码直接匹配。

2. 分数据库方言处理

MySQL/MariaDB

先替换控制字符为空格,再清理空的<strong>标签:

-- 合并写法
SELECT REGEXP_REPLACE(
    REPLACE(your_column, CHAR(26 USING utf8mb4), ' '),
    '<strong>\\s*</strong>',
    ''
) AS cleaned_text
FROM your_table;

PostgreSQL

同样先替换控制字符,再用正则移除冗余标签:

SELECT REGEXP_REPLACE(
    REPLACE(your_column, CHR(26), ' '),
    '<strong>\s*</strong>',
    '',
    'g'
) AS cleaned_text
FROM your_table;

SQL Server(2017+)

利用REGEXP_REPLACE完成标签清理,结合REPLACE替换控制字符:

SELECT REGEXP_REPLACE(
    REPLACE(your_column, CHAR(26), ' '),
    '<strong>\s*</strong>',
    ''
) AS cleaned_text
FROM your_table;

3. 扩展处理:批量替换所有控制字符

如果字符串中存在其他ASCII控制字符(U+0000至U+001F),可以用正则一次性替换:

  • MySQL:REGEXP_REPLACE(your_column, '[\\x00-\\x1F]', ' ')
  • PostgreSQL:REGEXP_REPLACE(your_column, '[\x00-\x1F]', ' ', 'g')
  • SQL Server:REGEXP_REPLACE(your_column, '[\x00-\x1F]', ' ')

注意事项

  • 确保数据库字符集为utf8mb4(MySQL)或其他支持完整Unicode的字符集,避免编码转换错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:45:35