マルチバイト文字は私に多くの苦痛をもたらしました。
この問題に対する提案はありますか?
マルチバイト文字を含む可能性のある CLOB フィールドがあり、SQL で選択し、このフィールドをダウンストリーム プロセス用の文字列に変換する必要があります。現在、次を使用しています。
SELECT DBMS_LOB.SUBSTR( description, 4000, 1 ) FROM table
ただし、上記のコマンドの 4000 は、バイトではなく文字の長さです。そのため、データに忍び込んだ可能性のあるマルチバイト文字を処理するために 3000 に変更する必要がありました。そうしないと、バッファー サイズ エラーが発生します。
問題は、マルチバイト文字を含まないレコードの場合です。必要以上のデータが不必要に切り捨てられる可能性があります。(4000 は文字列の制限です。私たちはそれを受け入れることができます/しなければなりませんでした。)
以下と同等のことを行う方法はありますか:
SELECT DBMS_LOB.SUBSTR( description, 4000bytes, 1 ) FROM table
そうすれば、可能な限り多くのデータを取得できます。
注:一時テーブル/ビューを作成することは許可されておらず、PL/SQL を使用せず、SQL SELECT のみを使用しています...