![]() クラウドで 伸びる人沈む人 |
|
|
|
|
|
|
|
|
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バックアップの「嘘」も勉強 |