【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について質問があれば随時募集しています。
ご遠慮なくお問い合わせください.
/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_