2011-11-12 4 views
1

に列のすべての値の長さを設定します0のフロントに追加して、彼らにその長さを作るので、彼らは上記の例になる必要があるだろう -MySQLのクエリは、私は、現在の例のようになり、すべての異なる長さであるMySQLデータベース内の列を持っている12

Reference (Column Name) 
000000012930 
000000001829 
000000000892 
000000182902 

最良の方法はこれを行うにはなりませんどのような場合、私は、これを行うために実行できるSQLクエリがありますあれ?

+1

この列のデータ型は? –

答えて

5

使用zerofillあなたは数字を使用する場合(INT、BIGINT、などフロートを...)

ALTER TABLE a modify column min int(12) /* other properties */ zerofill; 

あなたがvarchar型またはcharを使用している場合、あなたはPHP str_padを使用する必要があります。

あり
echo str_pad($input, 12, "0", STR_PAD_LEFT); 
+1

+1 PHPソリューションでは、mysqlデータに望ましくないゼロを付け加えないでください。 –

1

これを行うLPADというMySQL関数です。フィールドが文字列として扱われるため、小さな数字を切り捨てて大数を切り捨てることにも注意してください。ここに例があります:

mysql> CREATE TABLE foo (n INTEGER); 
Query OK, 0 rows affected (0.03 sec) 

mysql> INSERT INTO foo VALUES (12345), (2147483647); 
Query OK, 2 rows affected (0.00 sec) 
Records: 2 Duplicates: 0 Warnings: 0 

mysql> SELECT n, RPAD(n, 15, ' '), LPAD(n, 5, '0'), LPAD(n, 15, '0') FROM foo; 
+------------+------------------+-----------------+------------------+ 
| n   | RPAD(n, 15, ' ') | LPAD(n, 5, '0') | LPAD(n, 15, '0') | 
+------------+------------------+-----------------+------------------+ 
|  12345 | 12345   | 12345   | 000000000| 
| 2147483647 | 2147483647  | 21474   | 000002147483647 | 
+------------+------------------+-----------------+------------------+ 
2 rows in set (0.00 sec) 
関連する問題