[ Oracle ] 可変長文字列のサイズの決め方 ( varchar2 )

Pocket

こんばんわ、ハイボールでテンションが高いファンキー加藤です。ここでは、Oracle でも MySQL でもなんでもいいのですが、可変長文字列の最大値の決め方に対する単なる小言です。高尚な要素は1つもありません。というか、本ブログでは高尚なことは書いてありません。

スポンサーリンク

細かい割には浅はかな人間

なんちゃらコードのように桁数が決まっていたりするものはそもそも可変文字定義にしないことも多いと思いますが(別に可変長でも良いとはおもいます)、 備考みたいな項目に varchar2(32) のような定義をしておいてきっちり本当にきっちり最大で32バイト分入るような仕様にしないといけないか?と思います

十分大きめにとっておいて、プログラム側で文字数をざっくりチェックすればいいのではないのか?と割かしガサツなミーは思います。しかも Oracle の場合データベースのキャラクタセットによっては以下のようにサイズも異なります。

正確な情報を知りたい方は、Oracleマニュアル – Unicode文字コードの割当て などで確認してください。下表に嘘情報が書かれているかもしれません。ハイボールは強力です。また、データベースのバージョンによっても扱える文字コードなども異なります。

キャラクタセット サイズ
Shift_JIS 1~2バイト
EUC-JP 1~2バイト たまに3バイト
UTF-8 1~4バイト

現実にはきっちりしなきゃならない項目なんて少ないと思います。どうしてもキッチリしなきゃなりませんという人ほど 『 データベースの文字コードなんですか? 』 と質問しても、なぜそのような質問を受けているのか理解できていない人が多いような気がします。

キッチリテストするためです。

なんちゃらID、なんちゃらコード

なんちゃらIDや、なんちゃらコード関連でもう1つの愚痴です。ずいぶん前の話ですが、要件には なんちゃらコード は 『 00 』 のように2文字で表示します、と書いてありました。そこで char(2) で定義したところ、当然のように number(2) が当たり前ですみたいに言われました。

知らん、ボケ

数字のみ入るかどうかも書いてありません。当たり前のようドヤ顔で数値ですと言われます。その態度が非常に腹立たしいのです。別に number が嫌なわけではありません。態度が気に入らないだけです。

その会社では画面に XYZ コードを表示するときは、数字であれは 0埋めして桁を揃えて表示するのが当たり前の様子です。黙って、逆らわず、時が過ぎるのを待つのみです。あなたの会社のルールは勝手に決めてもらって良いのです。

ただ、それが全ての会社の常識と思い込んでいる人は大概痛いです。定年までその会社で働けるといいですね(イヤミ?それともジェラシー?)。

 

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *