レポ
クラウドで
伸びる人沈む人

連絡特定商取引将来設計運営方針&メルマガSEの彼女は?
成功レポート集 Fedora9インストール! EclipseでJava Oracleバックアップのアーキテクチャ ゼロからHPでCGI 便利ネット知識
無料レポ&講習 IT業界の実態 linux処方箋 Java処方箋 Oracle処方箋 Perl処方箋
VARCHAR2(10)で何文字挿入できるのか(ORA-12899)

<IT技術の処方箋:VARCHAR2(10)で何文字挿入できるのか(ORA-12899)>



データベースの項目属性を定義するとき、VARCHAR2()があります。
VARCHAR2()は、可変長の文字列です。


()の中の数字が、挿入できるbyte数となります。


このByte数を超えると、「ORA-12899値が大きすぎます」
というエラーがでます。


では、実際何文字入るのでしょうか。


例えば、VARCHAR2(10)だったら、10byteのデータを挿入できます。
つまり、半角英数字だったら、10文字入ります。
半角英数なら、()の数字が、挿入できる文字数です。



問題なのが、漢字や平仮名は何文字入るのか?ということです。
これは一概には言えません。


例えば、データベース(DB)の文字コードが「UTF-8」の場合、
平仮名は3Byteとなっています。
だから、VARCHAR2(10)には、平仮名3文字+半角英数1文字が入ります。



データベース(DB)の文字コードが「EUC-JP」の場合、
平仮名は2Byteとなっていますので、VARCHAR2(10)には、平仮名5文字入ります。


また、漢字だと4Byteになっているので、
挿入できる文字数が違ったものとなります。



このように、DBの文字コードによって、
さらに、そのマッピングされた文字そのものによって、
VARCHAR2()は挿入できる文字数が変わってきます。


※ちなみに、DBの初期設定の
NLS_LENGTH_SEMANTICSを
BYTE→CHARに変更すると、
その文字数だけ挿入できるようになります。

慣れてきましたか?慣れてきたら、
Oracleバックアップの「嘘」も勉強

PGとSE、372人の将来設計プラン・・・

緊急レポ:クラウドで伸びる人沈む人
Copyright © 2005-2017 SearchMan,All Rights Reserved.