2016-11-08 1146 views
1

我在Oracle 11g數據庫上使用SQL生成XML文檔。但我有一個數據庫字段的問題,因爲標題字段包含許多字符,其中一些XML看到的無效,我試圖使用下面的語句儘可能多地捕獲並將它們轉換爲NULL。ORA-31011:XML解析失敗 - 無效字符(oracle sql)

REGEXP_REPLACE (title, '’|£|&|*|@|-|>|/|<|;|\', '', 1, 0, 'i') as title 

我仍然得到解析問題,所以我知道必須有更多無效的字符,我錯過了。我知道它在這個領域失敗,因爲當我將字段更改爲字符串'標題'(如下)時,文檔被解析並且工作正常。

REGEXP_REPLACE ('title', '’|£|&|*|@|-|>|/|<|;|\', '', 1, 0, 'i') as title 

我使用的XML版本「1.0" 編碼=「UTF-8' ,有沒有解決這個簡單的方法還是我必須要2萬條記錄查找是失敗的記錄,這可能是任何。標題字段包含來自世界各地的歌曲標題,我可以使用REGEXP_REPLACE獲取char(32)之間的一系列字符,並讓char(255)不在此範圍內的任何內容替換爲NULL。

或者還有其他解決方案。

在此先感謝球員

回答

0

你有沒有考慮過只保留你想要的角色?我不知道它們是什麼,但這樣的事情

REGEXP_REPLACE('title', '[^a-zA-Z0-9 ,.!]', '', 1, 0, 'i') as title 
+0

嗨,是實際工作,你能解釋一下上面的東西是做戈登·利諾夫? –

+0

正則表達式查找任何不是數字,字符或空格,逗號,句點或感嘆號的字符。 –