Curl Global Community
コードのゼロ埋め - Printable Version

+- Curl Global Community (https://communities.curl.com)
+-- Forum: Blogs (https://communities.curl.com/forumdisplay.php?fid=17)
+--- Forum: Tech blog (https://communities.curl.com/forumdisplay.php?fid=18)
+---- Forum: Baison log (https://communities.curl.com/forumdisplay.php?fid=27)
+---- Thread: コードのゼロ埋め (/showthread.php?tid=1056)



コードのゼロ埋め - umemura - 03-20-2014

★point
 コードのゼロ埋めは出来る限りやめたほうがよい
、、、と思いませんか?
   理由1:DB桁数の変更に応じてプログラムの修正が必要になる
   理由2:エクセル表示時に、前ゼロが削除されてしまう


マスタのデータ設計などをする際に、たとえば、社員番号が5桁のCHAR型で定義されており、
「00001」というデータが存在する場合、
このデータは、「1」という検索条件でヒットさせるべきでしょうか。

単純に検索でヒットさせるためだけであれば、SQLでLIKE検索をすればいいでしょうが、
コード存在チェックのように一致させるためには、桁数に合わせてゼロ埋めを行う必要があります。
これは、プログラムがDBのレイアウトを意識しなければいけないので、
もし、マスタの桁数が変わったら、プログラムも合わせて変更しなければいけないことを意味します。

また、ゼロ埋めコードは、CSV出力した際に、エクセルで開くと、ゼロが削除されてしまう、
という問題もはらんでします。

最初から「A0001」というようなIDであれば、ゼロ埋めも必要ありませんし、
検索するユーザも、「A0001」として検索条件を意識するはずなので、
ゼロ埋めを行うようなコード設計は出来るかぎりやめておいたほうが無難ではないでしょうか。


 個人的には、「社員番号」である以上、CHAR型5桁という定義自体が間違っているのかも、という気がしています。
 つまり、「社員番号」という「数値」であるにもかかわらず、「社員を認識するID」という、
 コードとしての意味合いを持たせてしまっていることが、そもそも、よろしくない。

 とはいえ、ゼロサプレス、ゼロパディングは、SAPとのデータのやり取りでも頻発する問題なので、
 データ設計の門外漢がこういうことを言っていいものなのか・・・。。
 もし、ゼロ埋めコードに必要性があれば、コメント等で教えてもらえるとうれしいなぁ。