Python - MYSQL - 选择前导零

时间:2009-08-20 18:36:40

标签: python mysql

当使用Python并对MYSQL执行Select语句以从列中选择09时,零被删除,只有9被打印。

有没有办法拉出所有数字,包括前导零?

5 个答案:

答案 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的投射,此问题已在此帖中给出

How to convert from varbinary to char/varchar in mysql

答案 3 :(得分:0)

列的数据类型是什么?如果要保留前导零,则应该使用非数字列类型,例如VARCHAR

要在Python中格式化带前导零的数字,请使用格式说明符:

>>> print "%02d" % (1,)
01

答案 4 :(得分:0)

您可以通过以下函数在该列上运行每个查询:

if len(str(number)) == 1: number = "0" + str(number)

这会将数字转换为字符串,但据我所知,Python不允许在其数字数据类型中使用前导零。如果我错了,有人会纠正我。

编辑:John Millikin的回答与此相同,但效率更高。感谢您教我格式说明符!