2012-07-20 191 views
1

我有數據包含由於錯誤的導出工具而導致從Excel電子表格(* .xls)導入的充滿無效字符的註釋字段。替換PostgreSQL中的符號字符

該字符在XML中出錯,表示字符引用「&#xb」是無效的XML字符。

我該如何去替換wingdings字符,例如:PostgreSQL中的性別符號,塊,符號?

我試圖將這些字符複製並粘貼到替換語句或其他任何事情中,這是徒勞的。有沒有辦法通過RegExp來替換任何非字母數字或「 - = +」類型的字符?任何幫助,將不勝感激。

+0

檢查此問題:http://stackoverflow.com/questions/336210/regular-expression-for-alphanumeric-and-underscores – BlackVegetable 2012-07-20 19:38:33

+0

請在以後的帖子中顯示您的PostgreSQL版本。不同的版本具有不同的功能,所以它很重要。 – 2012-07-21 01:21:13

回答

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

注意「全局」的第四個參數'g'。沒有它,只有第一場比賽會被取代。

另請注意,öäü等字符是如何被替換的。您可能會或可能不會希望這樣...... 因此,你可能有興趣在unaccent擴展,提供了unaccent()功能:

的unaccent()函數從一個給定的 串口音(音調符號標誌)。

有關PostgreSQL正則表達式的詳細信息,請參見手冊here

+0

這非常有幫助。非常感謝你。 – MISMajorDeveloperAnyways 2012-07-20 20:23:00