MySQLでテーブルを作成する時にフィールドのデータ型を決めるわけですが、数値を格納する時はどうしましょう。よく使われるのは「INT」型だと思います。
そこでそのINT型のフィールドに「01」のようなゼロから始まる数値を格納すると。なんてことでしょう、先頭のゼロが消えてしまいます。
今回はこのようなゼロから始まる数値をINT型で格納する方法について書きます。
属性を「UNSIGNED ZEROFILL」にして、長さに桁数を指定する
まずは属性を「UNSIGNED ZEROFILL」にします。これを指定することで、長さで指定した桁数に揃えてゼロが付与されるようになります。phpMyAdminの設定画面だとこのようになります。
この設定だと「二桁で揃える」ことになるので、「一桁の数字には先頭にゼロが付く」ようになります。今回の実例としては都道府県の管理IDを二桁とする必要があったので、このような設定となりました。登録したデータはこのようになります。
桁数が異なる場合
上記の設定でお気付きかと思いますが、「UNSIGNED ZEROFILL」は「長さ」で設定した桁数に応じて先頭にゼロを付与するため、郵便番号や携帯電話番号など、登録される数値の桁数が決まっている時に使える方法です。
そのため、登録される数値の桁数が統一されていない場合、この方法は使えません。桁数が統一されていない場合で且つゼロから始まる数値を格納したい場合は、若干気持ち悪いですが「VARCHAR」で文字列として格納しましょう。
以上、MySQLで先頭のゼロを消さずにINTで数値を格納する方法「UNSIGNED ZEROFILL」についてでした。