[英]Python - MYSQL - Select leading zeros
當使用Python並對MYSQL執行Select語句以從一列中選擇09時,將刪除零,僅打印9。
有沒有辦法拉所有的數字,即包括前導零?
幾乎可以肯定,查詢,表定義或正在使用的ORM中都包含某些內容,認為該列為數字並將結果轉換為整數。 如果要保留前導零,則必須將列定義為字符串(無處不在!)。
編輯:服務器上的ZEROFILL
不會削減它。 Python將整數列視為Python整數,而這些整數沒有前導零,句點。 您要么必須將列類型更改為VARCHAR
,要么在Python中使用"%02d" % val
類的東西,或者在查詢中放入CAST(my_column AS VARCHAR)
。
MySQL在列定義中支持此功能:
CREATE TABLE MyTable (
i TINYINT(2) ZEROFILL
);
INSERT INTO MyTable (i) VALUES (9);
SELECT * FROM MyTable;
+------+
| i |
+------+
| 09 |
+------+
最佳選擇是按照Eevee
建議使用CAST
,但是您必須使用CAST ( ur_field AS CHAR(2) )
因為將其強制轉換為varchar
出現此問題
列是什么數據類型? 如果要保留前導零,則可能應使用非數字列類型,例如VARCHAR
。
要在Python中格式化帶有前導零的數字,請使用格式說明符:
>>> print "%02d" % (1,)
01
您可以通過以下函數在該列上運行每個查詢:
if len(str(number)) == 1: number = "0" + str(number)
這會將數字轉換為字符串,但是據我所知,Python不允許在其數字數據類型中使用前導零。 如果我錯了,請有人糾正我。
編輯:約翰·米利金(John Millikin)的答案與此相同,但效率更高。 感謝您教我有關格式說明符的知識!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.