PostgreSQL 替换 unicode 字符范围

Rut*_*uth 2 regex sql postgresql unicode replace

我遇到一些 XML 导出中不允许的字符问题。该请求只是从文本中删除无效字符,以确保数据的正确导出/导入。

到目前为止,多亏了这篇文章,我有了一个 sql 语句,它替换了一个声明的 Unicode 字符:

UPDATE mytable SET myproperty = replace(myproperty, U&'\UNICODE', '');
Run Code Online (Sandbox Code Playgroud)

它从定义的单元格内的所有匹配项中删除指定的 Unicode。但我想给出一堆要替换的 Unicode 字符,例如。0x1 - 0xf 有人知道如何实现这一目标吗?

dno*_*eth 5

使用TRANSLATE删除多个字符:

TRANSLATE(myproperty, 'list of characters', '');
Run Code Online (Sandbox Code Playgroud)

通常它用于替换字符,但如果替换字符串为空,则会删除它们。

编辑:

当然,您也可以使用正则表达式,这允许字符范围:

regexp_replace(myproperty, '[\u0041-\u0043a]', '', 'g')
Run Code Online (Sandbox Code Playgroud)

添加'g'标志以替换所有出现的情况...