例えば、ある 「キャラクタセット ID 」の文字列の格納に必要なバイト長さを調べるには
LENGTHB を使用する。
逆に character_set_id で 文字列長が X バイトの文字列を格納するのに必要な カラム定義 の数を調べるために NLS_CHARSET_DECL_LEN 関数を使用できる。
例えば、 AL32UTF8 は現在 1 〜3 バイト以上 で構成される。AL16UTF16 は 2バイトの固定長である。
それぞれのエンコードで 6バイト の文字列があるときに、文字数が最大となるパターンの文字列を格納可能な項目長の定義 NCHAR( X ) の X は UTF8 で NCHAR(6 [char] )、 UFT16 で NCHAR( 3 [char] )である。
ついでに指定バイト数で格納できる最小の文字数を取得する関数もあったらよかったのですが…
バージョンによって AL32UTF8 は Oracle 10g R1 において一部の特殊文字を 3バイト× 2 で保存、Oracle 10g R2 において Unicode 4.0 サポートにより 4 バイトで保存しているようなので、現行仕様では 4000 バイトで X 文字という情報が欲しい。