当使用Python并对MYSQL执行Select语句以从列中选择09时,零被删除,只有9被打印。
有没有办法拉出所有数字,包括前导零?
答案 0 :(得分:4)
几乎可以肯定,您的查询,表定义或正在使用的ORM认为列是数字并将结果转换为整数。如果要保留前导零,则必须将列定义为字符串(无处不在!)。
编辑:服务器上的ZEROFILL
不会削减它。 Python将整数列视为Python整数,并且那些没有前导零,句点。您必须将列类型更改为VARCHAR
,在Python中使用"%02d" % val
之类的内容,或在查询中添加CAST(my_column AS VARCHAR)
。
答案 1 :(得分:3)
MySQL在列定义中支持这一点:
CREATE TABLE MyTable (
i TINYINT(2) ZEROFILL
);
INSERT INTO MyTable (i) VALUES (9);
SELECT * FROM MyTable;
+------+
| i |
+------+
| 09 |
+------+
答案 2 :(得分:1)
最佳选项将按照CAST
的建议使用Eevee
,但您必须使用CAST ( ur_field AS CHAR(2) )
作为对varchar
的投射,此问题已在此帖中给出
答案 3 :(得分:0)
列的数据类型是什么?如果要保留前导零,则应该使用非数字列类型,例如VARCHAR
。
要在Python中格式化带前导零的数字,请使用格式说明符:
>>> print "%02d" % (1,)
01
答案 4 :(得分:0)
您可以通过以下函数在该列上运行每个查询:
if len(str(number)) == 1: number = "0" + str(number)
这会将数字转换为字符串,但据我所知,Python不允许在其数字数据类型中使用前导零。如果我错了,有人会纠正我。
编辑:John Millikin的回答与此相同,但效率更高。感谢您教我格式说明符!