SQL 関数一覧 (E‐N) > NLS_CHARSET_ID、NLS_CHARSET_NAME

データベースキャラクタセット、各国語キャラクタセット名の取得

syntax

NLS_CHARSET_ID ( character_set_name )
NLS_CHARSET_NAME ( character_set_id )
return [ id | name ]

parameter

character_set_nameキャラクタセット名
character_set_idキャラクタセットID

return

  • キャラクタセットのID、または、名称を戻す。

avail

  • SQL および PL/SQL の両方で使用可能。

syntax

NLS_CHARSET_DECL_LEN ( byte_count , character_set_id)
return [ integer ]

parameter

byte_count数値式:文字列のバイト数
character_set_idキャラクタセットID

return

  • 指定キャラクタセットで格納するときの項目長の定義を戻す。

avail

  • SQL および PL/SQL の両方で使用可能。

キャラクタセット名

キャラクタセットの種類character_set_name 引数
データベースキャラクタセットCHAR_CS
各国語キャラクタセットNCHAR_CS
Shift-JISJA16SJIS
JA16SJISTILDE
EUC-JPJA16EUC
JA16EUCTILDE
UTF-8AL32UTF8
UTF-16AL16UTF16

NLS_CHARSET_ID、NLS_CHARSET_NAME 関数の内容

キャラクタセット の ID と 名称 の正引きと逆引きを行なう。
現在使用中のデータベースの CHAR や VARCHAR2 などの文字コード=「データベースキャラクタセット」と NCHAR や NVARCHAR2 などの「各国語キャラクタセット」の名称へのエイリアスとして、'CHAR_CS' と 'NCHAR_CS' というキャラクタセット名が用意されている。

NLS_CHARSET_DECL_LEN 関数の内容

文字列を格納するのに必要となるカラム長を求める。(byte セマンティクス ⇒ char セマンティクス 変換)

NLS_CHARSET_DECL_LEN 関数の追加説明

例えば、ある 「キャラクタセット 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 文字という情報が欲しい。

NLS_CHARSET_ID、NLS_CHARSET_NAME 使用例

現在のデータベースのキャラクタセット、各国語キャラクタセットを調べる

SQL> select NLS_CHARSET_NAME(NLS_CHARSET_ID('char_cs')) db_charset ,
  2         NLS_CHARSET_NAME(NLS_CHARSET_ID('nchar_cs')) national_cs from dual;
 
DB_CHARSET                 NATIONAL_CS
-------------------------- ------------------
JA16SJISTILDE              AL16UTF16

NLS_CHARSET_DECL_LEN 使用例

SQL> select NLS_CHARSET_DECL_LEN( 6, nls_charset_id('ja16sjis')) sjis,
  2         NLS_CHARSET_DECL_LEN( 6, nls_charset_id('ja16euc')) euc_jp,
  3         NLS_CHARSET_DECL_LEN( 6, nls_charset_id('al16utf16')) utf16,
  4         NLS_CHARSET_DECL_LEN( 6, nls_charset_id('al32utf8')) utf8
  5  from dual;
 
      SJIS     EUC_JP      UTF16       UTF8
---------- ---------- ---------- ----------
         6          6          3          6


キャラクタセット

 
アルファベット別 関数一覧 ショートカット
ABCDEFG
HILMNOP
RSTUVWX
日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle のライセンスがわからない…
Oracle Direct (ネットで聞いても最後はここで要確認)