Python - MYSQL - 选择前导零
在使用Python和MYSQL进行查询时,如果你从某一列中选择09,结果只会显示9,前面的0会被去掉。
有没有办法让你获取到所有的数字,包括前面的0呢?
5 个回答
1
最好的办法是使用 CAST
,正如 Eevee
所建议的那样,但你需要使用 CAST ( ur_field AS CHAR(2) )
,因为转换成 varchar
会遇到这个帖子中提到的问题。
3
MySQL在列的定义中支持这个功能:
CREATE TABLE MyTable (
i TINYINT(2) ZEROFILL
);
INSERT INTO MyTable (i) VALUES (9);
SELECT * FROM MyTable;
+------+
| i |
+------+
| 09 |
+------+
4
你的查询、表格定义或者你使用的ORM(对象关系映射)中,肯定有某个地方把这个列当成数字来处理了,所以结果被转成了整数。如果你想保留前面的零,必须把这个列定义为字符串(在所有地方都要这样做)。
补充一下:服务器上的 ZEROFILL
是不够的。Python把整数列当作Python的整数来处理,而整数是没有前导零的。你要么得把列的类型改成 VARCHAR
,要么在Python中使用类似 "%02d" % val
的方式,或者在查询中加上 CAST(my_column AS VARCHAR)
。