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

如何在DuckDB中替换列特殊字符?正则替换失效解决

DuckDB正则替换特殊字符失效的解决方法

你的问题出在DuckDB的REGEXP_REPLACE默认只替换第一个匹配的特殊字符,而非全局替换所有匹配项。同时要注意SQL字符串中反斜杠的转义规则,修正后就能实现预期效果。

正确的SQL语句需添加全局替换标志'g':

UPDATE test
SET State = REGEXP_REPLACE(State, '[^a-zA-Z0-9\\s]', ' ', 'g')
WHERE State IS NOT NULL;

关键说明:

  • 第四个参数'g'表示全局替换,会将所有匹配到的非字母、数字、空白的字符替换为空格
  • 正则中的\\s是SQL字符串的转义写法,对应正则语法里的\s(匹配空格、制表符等空白字符)

如果需要适配Unicode字母(比如非英文的特殊字母),可以用更通用的正则规则:

UPDATE test
SET State = REGEXP_REPLACE(State, '[^\\p{L}\\p{N}\\s]', ' ', 'g')
WHERE State IS NOT NULL;

这里\\p{L}匹配任意Unicode字母,\\p{N}匹配任意Unicode数字,覆盖范围更广。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:05:55