Oracle SQL クエリで特定のフィールド値 (4000 文字を超える場合とそうでない場合がある) で使用されるバイト数を調べる方法はありますか?
dbms_lob.getLength()
バイトではなく文字数を返します。この文字セットには文字ごとに可変バイト数があるため、単純な乗算を行うことはできません。使用について簡単に疑問に思いましdbms_lob.converttoblob()
たが、これには PL/SQL が必要なようで、単一のクエリで直接行う必要があります。
LENGTHB()
この結果を取得するには、Oracle 関数を使用します。DBMS_LOB.CONVERTTOBLOB
と useを使用して CLOB を BLOB に変換する方法がありますDBMS_LOB.GETLENGTH()
。これはバイト数を返しません。
私はまだ満足のいく答えを受け取っていないので、現在dbms_lob.getlength()
、文字数を取得するために使用してから2を掛けることに頼っています.これは、AL32UTF8文字セットに関するコメントに基づいています:
https://forums.oracle.com/forums/thread.jspa?threadID=2133623
ほとんどすべての文字が 2 バイトのストレージを必要とし、一部の特殊文字は 4 バイトのストレージを必要とします。
これがどれほど真実であるかは確認していませんが、その人は自分が話していることを知っているように聞こえたので、現在「最良の推測」として使用しています.