2009-03-04 9 views

答えて

22

フィールドにZEROFILL属性を追加してみてください。

+0

数値データ型の詳細http://dev.mysql.com/doc/refman/5.0 /en/numeric-types.html – matpie

1

は、フィールドは整数ですか?もしそうなら、答えは "なぜ?整数です!" ;-)

+0

どういう意味ですか? –

+0

@ [32]:ゼロ埋めの点は何ですか?値は変更されません。これは表示目的に過ぎないのですか? –

+0

@ [32]:nevermind、自分の質問に答えました。これは表示用です(http://dev.mysql.com/doc/refman/5.0/en/numeric-types.htmlを参照) –

17

あなたが広い4つの文字

select lpad(idcolumn,4,'0') from mytable; 

またはテーブルを宣言するときZEROFILL使用して、所望の幅を指定するには、ゼロでパッドに、整数としてそれを残して、例えば、あなたのSQLでの人間のためにそれをフォーマットでした:あなたは、ゼロパディングされた形式でのAUTO_INCREMENTカラムが必要な場合は

create table tmpfoo (
    mykey int(6) zerofill not null auto_increment, 
    primary key(mykey) 
); 

insert into tmpfoo values(1),(2); 

select * from tmpfoo; 
+--------+ 
| mykey | 
+--------+ 
| 000001 | 
| 000002 | 
+--------+ 
+0

回避策は好きです。ありがとうございます –

5

、私はあなたがデータベースにそのようにそれを保存しようとするとそのように表示していないことを示唆しています。 PHPで

、あなたが表示またはそれ以外のIDを使用するには、次のコードを使用することができます。

$padded_id = str_pad($id, 4, '0'); 
+0

いいねえ、それについて知りませんでした。 –

5

MySQLは整数の列にZEROFILLをサポートしています。

mysql> create table foo (the_key int unsigned zerofill not null 
     auto_increment primary key); 
Query OK, 0 rows affected (0.21 sec) 

mysql> insert into foo SET the_key = Null; 
Query OK, 1 row affected (0.00 sec) 

... 

mysql> insert into foo SET the_key = Null; 
Query OK, 1 row affected (0.00 sec) 

mysql> select * from foo; 
+------------+ 
| the_key | 
+------------+ 
| 0000000001 | 
| 0000000002 | 
| 0000000003 | 
| 0000000004 | 
| 0000000005 | 
| 0000000006 | 
| 0000000007 | 
| 0000000008 | 
+------------+ 
8 rows in set (0.00 sec) 

あなたがに見てする必要があるかもしれませんsmallint(5桁)、またはトリム/パディングを使用します。データベース内のパッドに

2

はZEROFILL

にid列を設定しかし、その表示目的のためにのみ私はLPAD SELECT RIGHT( '000000' + yourNum、6)を使用することをお勧めします場合。

関連する問題