Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有MySQL与sprintf的等价物?_Mysql_Printf - Fatal编程技术网

是否有MySQL与sprintf的等价物?

是否有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位的焊盘编号归零,并且不会影响这些数字)。如果您总是需要这样的数字(而不仅仅是在一个查询中),这将非常有用。根据您拥有的

我的表中有一个INT字段,我想选择它作为零填充字符串。例如,8将显示为
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属性添加到列()