2011-01-04 11 views
12

テーブルにINTフィールドがありますが、これはゼロ詰めの文字列として選択したいと考えています。たとえば、8は008、23は023などとなります。これはMySQLのクエリで可能ですか?あなたはLPAD機能を探しているsprintfに相当するMySQLはありますか?

答えて

24

SELECT LPAD(23, 3, '0'); -- '023' 

編集:

コメントで@Bradで指摘したように、あなたもZEROFILLと列を定義することができます。

`foo` INT(3) ZEROFILL 

これは、少なくとも3桁の数字を生成します(ゼロ桁の数字は3桁未満で、eそれらをもっとやってください)。あなたが常にそのような数字を出す必要がある場合(そして1つのクエリだけでなく)数字が必要な場合に便利です...

+3

この回答の代わりに(そして目的に応じて)、列にZEROFILL属性を追加することもできます([MySQLの数値型を参照](http://dev.mysql.com/doc/refman/5.0 /en/numeric-type-overview.html)) –

0

大きい数字の結果をカットせずに最小限のパディング数を達成するには、IFステートメントを使用する必要があります。

以下の例では、すべてのIDに最低3桁の数字が割り当てられますが、大きなIDにはまだトリムされていません。

SELECT IF(id < 100, LPAD(id, 3, 0), id) 
関連する問題