2009-03-04 11 views

risposta

22

Prova ad aggiungere l'attributo ZEROFILL al campo.

+0

Ulteriori informazioni sui tipi di dati numerici: http://dev.mysql.com/doc/refman/5.0 /en/numeric-types.html – matpie

1

è il campo un numero intero? se è così, la risposta è "perché? è un numero intero!" ;-)

+0

Cosa intendi? –

+0

@ [32]: Voglio dire, qual è il punto di zero-padding di un intero? Non cambia il valore. È solo per scopi di visualizzazione? –

+0

@ [32]: non importa, ho risposto alla mia domanda - questo è solo per scopi di visualizzazione (vedi http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html) –

17

Potrebbe lasciarlo come un intero e formattarlo per gli esseri umani nel vostro SQL, ad esempio, per riempire con zeri a 4 caratteri larghi

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

o utilizzare ZEROFILL e specificare la larghezza desiderata quando dichiara la tavola :

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

Come soluzione alternativa ma buona. Grazie –

5

Se avete bisogno della colonna AUTO_INCREMENT in un formato imbottita pari a zero, vi suggerisco di visualizzare come tale e non tentare di memorizzare nel database in questo modo.

In PHP, è possibile utilizzare il seguente codice per visualizzare o comunque utilizzare il ID:

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

Bel modo, non lo sapevo. –

5

MySQL supporta ZEROFILL sulle colonne interi:

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) 

potrebbe essere necessario esaminare usando un piccolo segno (5 cifre), o taglio/imbottitura.

2

Per pad nel database impostare la colonna id per ZEROFILL

Ma se per gli scopi dell'esposizione soltanto mi consiglia di utilizzare LPAD Selezionare Destra ('000000' + yourNum, 6);

Problemi correlati