是否有MySQL与sprintf的等价物?
我的表中有一个INT字段,我想选择它作为零填充字符串。例如,8将显示为是否有MySQL与sprintf的等价物?,mysql,printf,Mysql,Printf,我的表中有一个INT字段,我想选择它作为零填充字符串。例如,8将显示为008,23将显示为023,依此类推。这在MySQL查询中可能吗?您正在寻找函数: SELECT LPAD(23, 3, '0'); -- '023' 编辑: 正如@Brad在评论中指出的,您还可以使用ZEROFILL定义列: `foo` INT(3) ZEROFILL 这将始终产生至少3位数字(将小于3位的焊盘编号归零,并且不会影响这些数字)。如果您总是需要这样的数字(而不仅仅是在一个查询中),这将非常有用。根据您拥有的
008
,23将显示为023
,依此类推。这在MySQL查询中可能吗?您正在寻找函数:
SELECT LPAD(23, 3, '0'); -- '023'
编辑:
正如@Brad在评论中指出的,您还可以使用ZEROFILL定义列:
`foo` INT(3) ZEROFILL
这将始终产生至少3位数字(将小于3位的焊盘编号归零,并且不会影响这些数字)。如果您总是需要这样的数字(而不仅仅是在一个查询中),这将非常有用。根据您拥有的mySql版本,您可以定义一个UDF来为您格式化值。请参阅。如果要实现最小的填充数量,而不剪切较大数字的结果,则需要使用
If
语句
下面的示例将确保所有ID至少有三位数字,同时允许较大的ID未经修剪地通过
SELECT IF(id < 100, LPAD(id, 3, 0), id)
选择IF(id<100,LPAD(id,3,0),id)
作为此答案的替代方法(取决于您的目的),您可以将ZEROFILL属性添加到列()