web-dev-qa-db-ja.com

MySQLでsprintfに相当するものはありますか?

テーブルにINTフィールドがあり、ゼロが埋め込まれた文字列として選択したいと思います。したがって、たとえば、8は008として、23は023として出力されます。これはMySQLクエリで可能ですか?

21
DisgruntledGoat

LPAD 関数を探しています:

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

編集:

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

`foo` INT(3) ZEROFILL

これにより、常に少なくとも3桁の数値が生成されます(3桁未満の数値はゼロパッドされ、それ以上の影響はありません)。 (1つのクエリだけでなく)常にそのように数字を出す必要がある場合に便利です...

32
ircmaxell

より大きな数の結果をカットせずに最小数のパディングを実現したい場合は、IFステートメントを使用する必要があります。

以下の例では、すべてのIDが3桁以上であることを確認し、それよりも大きいIDはトリミングせずに通過させます。

SELECT IF(id < 100, LPAD(id, 3, 0), id)
1
jaywilliams