Oracleで文字列を入れるための項目属性
Oracleのデータベースの項目属性を定義する時、VARCHAR2()があります。
VARCHAR2()は、可変長の文字列です。
()の中の数字が、挿入できるbyte数となります。
このByte数を超えると、ORA-12899値が大きすぎますというエラーがでます。
では、実際何文字入るのでしょうか。
Oracleのデータベースの項目属性を定義する時、VARCHAR2()があります。
VARCHAR2()は、可変長の文字列です。
()の中の数字が、挿入できるbyte数となります。
このByte数を超えると、ORA-12899値が大きすぎますというエラーがでます。
では、実際何文字入るのでしょうか。
本論に行く前に、少し余談です。
例えば、MySQLでは文字列の属性としてVARCHAR()があります。
しかし、OracleではVARCHAR2()です。
何故、Oracleは2なのでしょうか?
実は、Oracleも以前はVARCHAR()で定義していました。
しかし、ある時から廃止になり、現在はVARCHAR2()のみが利用されています(経緯不明)。
では、本題に戻って
OracleのVARCHAR2(10)は何文字入るのでしょうか。
例えば、VARCHAR2(10)だったら、10byteのデータを挿入できます。
つまり、半角英数字だったら、10文字です。
半角英数なら、()の数字が、挿入できる文字数です。
問題なのが、漢字や平仮名は何文字入るのか?ということです。
これは一概には言えません。
例えば、Oracleの文字コードが「UTF-8」の場合、平仮名は3Byteとなっています。
だから、VARCHAR2(10)には、平仮名3文字+半角英数1文字が入ります。
Oracleの文字コードが「EUC-JP」の場合、
平仮名は2Byteとなっていますので、VARCHAR2(10)には平仮名5文字入ります。
また、漢字だと4Byteになっているので、挿入できる文字数が違ったものとなります。
このように、DBの文字コードによって、さらに、そのマッピングされた文字そのものによって、 VARCHAR2()は挿入できる文字数が変わってきます。
・・・・すみません、しまらない結論で(苦笑)。
参考までに、MySQLのVARCHAR(10)は簡単です。
MySQLの場合、全角だろうが半角だろうが10文字です。
簡単でしょ(笑)。
OracleとMySQLの違いも、少し意識しておきましょう。
Copyright(c) 2005-2024 SearchMan Sato . All Rights Reserved. 特定商取引に基づく表示