替换PostgreSQL中的符号字符

时间:2012-07-20 19:35:14

标签: xml regex postgresql replace invalid-characters

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

该字符在XML中出错,称字符引用“& #xb”是无效的XML字符。

我如何更换Wingdings字符,例如:PostgreSQL中的性别标志,块,符号?

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

1 个答案:

答案 0 :(得分:2)

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中的特殊含义。

注意“global”的第4个参数'g'。没有它,只会替换第一场比赛。

另请注意,öäü等字符也会被替换。你可能想要也可能不想...... 因此,您可能会对提供unaccent()功能的unaccent扩展程序感兴趣:

  

unaccent()函数从给定中删除重音符号(变音符号)   字符串。

手册here中有关PostgreSQL正则表达式的详细信息。