Oracle 11gデータベースでSQLを使用してXML文書を生成しています。しかし、私はデータベースフィールドに問題があります。なぜなら、タイトルフィールドにはXMLの一部が無効であると思われる文字がたくさんあるからです。できるだけ多くの文字をキャッチしてNULLに変換しようとしています。ORA-31011:XML解析に失敗しました - 無効な文字(oracle sql)
REGEXP_REPLACE (title, '’|£|&|*|@|-|>|/|<|;|\', '', 1, 0, 'i') as title
パーズの問題が発生しているため、私が見逃した無効な文字がもう1つあるはずです。フィールドを文字列 'Title'(以下のように)に変更すると、このフィールドが失敗していることがわかります。ドキュメントは解析され、正常に動作します。
REGEXP_REPLACE ('title', '’|£|&|*|@|-|>|/|<|;|\', '', 1, 0, 'i') as title
私は、XMLのバージョン使用している「1.0" エンコーディングを= "UTF-8' 、これを回避する簡単な方法があるか、I 2万枚のレコードから任意の可能性が失敗しているレコードを検索しなければなりませんの。タイトル欄には世界中の曲のタイトルが入っていますが、REGEXP_REPLACEを使ってchar(32)の間の文字の範囲を取得し、この範囲にないものはNULLで置き換えるchar(255)と言うことができます。
ORには別の解決方法があります。
おかげさまで、ありがとうございました
こんにちは、実際にあなたがゴードン・リノフをやっている以上のものを説明することができ働い
あなたは、Oracleの機能を
例を、このような文字をエスケープすることができますか? –
正規表現は、数字、文字またはスペース、カンマ、ピリオド、または感嘆符ではない文字をすべて検索します。 –