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

PostgreSQL中用regexp_replace/replace无法移除所有空白字符的问题

解决PostgreSQL中特殊空白字符无法替换的问题

那个无法被普通空格替换的字符大概率是非断空格(NBSP,Unicode编码U+00A0)——这类字符常见于复制粘贴的文本(比如网页、办公文档),外观和普通空格一致,但编码不同,普通的replace或\s正则规则无法匹配。

步骤1:确认字符的Unicode编码

先提取那个特殊字符并查看其编码,执行以下SQL:

-- 替换成你的变量名或实际字符串
SELECT unicode(substring('Snímek obrazovky 2019-12-05 v 13.33.37.png' from position('v' in 'Snímek obrazovky 2019-12-05 v 13.33.37.png')+1 for 1));

如果返回结果是160,即可确定是NBSP。

步骤2:针对性替换

方法1:同时替换普通空格和NBSP

用嵌套的replace函数一次性处理两种空格:

SELECT replace(replace(your_variable, ' ', '_'), U&'\00A0', '_');

U&'\00A0'是PostgreSQL中表示Unicode字符的标准写法。

方法2:用正则匹配所有Unicode水平空白字符

使用Unicode正则类\p{Blank}匹配所有水平空白字符(包括普通空格、NBSP等):

SELECT regexp_replace(your_variable, '\p{Blank}', '_', 'g');

如果需要覆盖换行、制表符等所有空白类型,可以用\p{Space}替代\p{Blank}。

方法3:用translate批量替换

translate函数可一次性映射多个字符到目标字符,写法更简洁:

SELECT translate(your_variable, ' ' || U&'\00A0', '__');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:09:24