替换PostgreSQL中的符号字符



我的数据包含一个注释字段,该字段由于导出工具错误而充满无效字符,并且是从excel电子表格(*.xls)导入的。

该字符在XML中出错,表示字符引用"&#xb"是无效的XML字符。

我该如何在PostgreSQL中替换wingdings字符,例如:性别符号、块、符号?

我试图将这些字符复制并粘贴到替换语句中,或者任何与此相关的内容中,但都是徒劳的。有没有办法通过RegExp来替换任何非字母数字或"-=+"类型的字符?如有任何帮助,我们将不胜感激。

SELECT regexp_replace('123xabcABCxöäüxÖÄÜx¡‘’xæćčx=+-x"§$%&/()x'
                     ,'[^a-zA-Z0-9=+-]','_','g')

结果:

123xabcABCx___x___x___x___x=+-x________x

字符类[^a-zA-Z0-9=+-]中的前导^否定它。读取"以下列表中的所有字符而非"。

注意将-字符放在字符类的末尾(或开头),否则它将具有类似于a-z的特殊含义。

注意第4个参数'g'表示"全局"。如果没有它,只有第一场比赛会被替换。

还要注意,像öäü这样的字符也是如何被替换的。你可能想要也可能不想要。。。因此,您可能对提供unaccent()功能的unaccent扩展感兴趣:

函数的作用是从给定的一串

有关PostgreSQL正则表达式的详细信息,请参阅此处的手册。

最新更新