物流・倉庫・WMS・プログラマ日記

物流・倉庫・WMS・プログラマ日記

在庫管理・倉庫管理を扱う事が多いプログラマの備忘録です。

【SQLを丁寧に理解する】CHARとNCHAR PART1【ORACLEの場合】

こんにちは、EightyEightRiceです。

 

今日の記事は、【SQLを丁寧に理解する】CHARとNCHAR【ORACLEの場合】です。

データベースを扱い場合に、よくハマってしまう項目について、丁寧に説明していきます。

ざっと読み飛ばすだけでも、

「へぇーそうなんだ」

と、思っていただけるような構成を心がけています。

 

今回は

CHARとNCHAR PART1【ORACLEの場合】

です。

(VARCHAR2とNVARCHAR2も同じ考え方でOKなので、以下の文章を、

CHAR➡VARCHAR2、NCHAR➡NVARCHAR2に置き換えて読んでください。)

 

よくこんなセリフを聞きます。

「CHARの制約はバイト数で、NCHARの制約は文字数」

 

結論から言うと、普通にPLSQLを書いていれば上記は正しいです。

 以下、解説です。

 

ある変数が CHAR(3) と宣言してある場合、3バイトになります。

なぜでしょうか?

実は、CHARの正確な宣言は、

 CHAR( 3 BYTE) や、CHAR( 3 CHAR)

になります。

ただし、"()"の中の「BYTE」や「CHAR」を省略した場合、

デフォルトで「BYTE」を選択した事になり、

CHAR(3)は3バイトになります。

 

一方で、

 NCHAR(3) と宣言してある場合、3文字になります。

NACHARも実際は、

 NCHAR( 3 BYTE) や、NCHAR( 3 CHAR)

のように宣言できます。

NCHARの場合は「BYTE」や「CHAR」を省略した場合、

デフォルトで「CHAR」を選択した事になり、

NCHAR(3)は3バイトになります。

 

・結論

「CHAR(3)の制約は3バイト」

「NCHAR(3)の制約は3文字」

 

以上、解説でした。

 

/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_

SQLについて質問があれば随時募集しています。

ご遠慮なくお問い合わせください.

/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_