• ベストアンサー

ORACLEでNCHAR/CHARの違い

ORACLEでNCHAR/CHARの違いについて教えて下さい。 文字列の記述に以下の2つの書きかたがありますが、 1.NCHAR(40) 2.CHAR(40 CHAR) これらにはどのような違いがあり、どう使い分けると良いでしょうか? よろしくお願い致します。 以上

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

文字コードには古い歴史がありますので、まだ過渡期ですが、最終的にはUNICODE(プログラム内部では16ビットの純正のUNICODE、インターネット等はUNICODEを1バイト変換したUTF-8)に集約されて行くと考えて下さい。 シフトJISの場合は日本語しか対応できませんが、UNICODEであれば世界中の文字を混在させる事ができます。OracleはNCHARも1バイト単位で記憶しているようですが、SQL Server等のNCHARは2バイト(16ビット)のUNICODEで記憶しているようです、他のデータベースはUTF-8を使用している物もありますが、こちらは、日本語がほぼ3バイトで表現されるので、DB2等は文字数に影響します。尚、PostgreSQL等はUNICODE変換時の文字数で計算してUTF-8で登録出来るようです。(NCHARが無いRDBMSも有ります) どちらにしても、8ビットのACSIIコードのみ登録する場合はCHARで、以外はNCHARとされると良いです。

yu_OKWave
質問者

お礼

ご丁寧に有難う御座いました。

その他の回答 (1)

回答No.1

NCHARはNational Caracterですので本来は各国別コードを登録する事を想定しています。 一方、CHARは本来はASCIIコードのみを想定しています。 Oracleの場合、どちらでも各国別コードを登録できますので、厳密に区分けしなくても動きますが、一応、日本語を含む場合はNCHAR,含まない場合はCHARとされると良いと考えます。

yu_OKWave
質問者

お礼

早速の回答有難う御座いました。 ひとつ質問させて頂きたいのですが、 >>一応、日本語を含む場合はNCHAR,含まない場合はCHARとされると良い についてですが ・・・ この「日本語」という意味は「全角文字」と考えて良いでしょうか? たとえば、ベトナム語やタイ語でも同様でしょうか? また、日本語とベトナム語やタイ語が混在する場合は如何(NCHARを選択すべきと考える)でしょうか? よろしくお願い致します。

関連するQ&A