有没有相当于sprintf的MySQL?

时间:2011-01-04 15:10:49

标签: mysql printf

我的表中有一个INT字段,我想选择它作为零填充字符串。例如,8表示008,23表示023,依此类推。这在MySQL查询中是否可行?

3 个答案:

答案 0 :(得分:28)

您正在寻找LPAD功能:

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

修改

正如@Brad在评论中指出的那样,您还可以使用ZEROFILL定义列:

`foo` INT(3) ZEROFILL

这将始终产生至少3位数字(它将零填充数字少于3位数,并且不会影响更多数字)。如果您总是需要这样的数字(而不仅仅是在一个查询中),这很有用......

答案 1 :(得分:1)

如果要实现最小数量的填充,而不削减较大数字的结果,则需要使用IF语句。

以下示例将确保所有ID至少包含三位数字,同时让更大的ID仍未通过。

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

答案 2 :(得分:-1)

根据您拥有的mySql版本,您可以定义一个UDF,为您格式化值。见http://dev.mysql.com/doc/refman/5.1/en/adding-functions.html