2009-03-04 25 views

Trả lời

22

Thử thêm thuộc tính ZEROFILL vào trường.

+0

Tìm hiểu thêm về kiểu dữ liệu số: http://dev.mysql.com/doc/refman/5.0 /en/numeric-types.html – matpie

1

là trường là số nguyên? nếu có, câu trả lời là, "tại sao? nó là một số nguyên!" ;-)

+0

Ý của bạn là gì? –

+0

@ [32]: Ý tôi là, điểm của số nguyên không đệm là gì? Nó không thay đổi giá trị. Đây có phải là chỉ cho mục đích hiển thị? –

+0

@ [32]: nevermind, trả lời câu hỏi của riêng tôi - đây chỉ là mục đích hiển thị (xem http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html) –

17

bạn có thể để nó như một số nguyên và định dạng nó đối với con người trong SQL của bạn, ví dụ, để pad với số không đến 4 ký tự rộng

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

Hoặc sử dụng zerofill và xác định chiều rộng mong muốn khi tuyên bố bàn :

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

Giống như cách giải quyết nhưng tốt.Thanks –

5

Nếu bạn cần cột auto_increment ở định dạng đệm 0, tôi khuyên bạn nên hiển thị cột đó và không cố gắng lưu trữ trong cơ sở dữ liệu theo cách đó.

Trong PHP, bạn có thể sử dụng đoạn mã sau để hiển thị hoặc sử dụng id:

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

Cách hay, không biết về điều đó. –

5

MySQL hỗ trợ ZEROFILL trên các cột số nguyên:

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) 

Bạn có thể cần phải xem xét sử dụng một smallint (5 chữ số), hoặc cắt tỉa/padding.

2

Để pad trong cơ sở dữ liệu thiết lập các cột id để ZEROFILL

Nhưng nếu nó cho mục đích hiển thị duy nhất tôi khuyên bạn nên sử dụng LPAD CHỌN RIGHT ('000000' + yourNum, 6);

Các vấn đề liên quan