4

Oracle SQL クエリで特定のフィールド値 (4000 文字を超える場合とそうでない場合がある) で使用されるバイト数を調べる方法はありますか?

dbms_lob.getLength()バイトではなく文字数を返します。この文字セットには文字ごとに可変バイト数があるため、単純な乗算を行うことはできません。使用について簡単に疑問に思いましdbms_lob.converttoblob()たが、これには PL/SQL が必要なようで、単一のクエリで直接行う必要があります。

4

2 に答える 2

1

LENGTHB()この結果を取得するには、Oracle 関数を使用します。DBMS_LOB.CONVERTTOBLOBと useを使用して CLOB を BLOB に変換する方法がありますDBMS_LOB.GETLENGTH()。これはバイト数を返しません。

于 2012-11-27T16:17:39.653 に答える
1

私はまだ満足のいく答えを受け取っていないので、現在dbms_lob.getlength()、文字数を取得するために使用してから2を掛けることに頼っています.これは、AL32UTF8文字セットに関するコメントに基づいています:

https://forums.oracle.com/forums/thread.jspa?threadID=2133623

ほとんどすべての文字が 2 バイトのストレージを必要とし、一部の特殊文字は 4 バイトのストレージを必要とします。

これがどれほど真実であるかは確認していませんが、その人は自分が話していることを知っているように聞こえたので、現在「最良の推測」として使用しています.

于 2012-11-27T17:29:24.603 に答える