我的数据包含一个注释字段,该字段由于导出工具错误并从Excel电子表格(* .xls)导入而充满无效字符。
该字符在XML中出错,称字符引用“& #xb”是无效的XML字符。
我如何更换Wingdings字符,例如:PostgreSQL中的性别标志,块,符号?
我徒劳地试图将这些字符复制并粘贴到替换语句中,或任何相关内容,这都是徒劳的。有没有办法通过RegExp替换任何非字母数字或“ - = +”类型的字符?任何帮助将不胜感激。
答案 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正则表达式的详细信息。