簡體   English   中英

Python-MYSQL-選擇前導零

[英]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出現此問題

如何在MySQL中從varbinary轉換為char / 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM