2012-03-14 40 views
1

我正在設計類似於在線閱讀一本書的東西。衆所周知,大多數書中都有章節。每章都有一個數字:01,02等等。 現在,我有一些有十進制數的章節,如:01.5,02.5等等。 現在我的MySQL數據類型是「smallint」,只允許4個字符,屬性爲「unsigned zerofill」。 所以現在,如果我輸入類似於:「1」 它會將其存儲爲:0001 如果數字有小數或數字以外的任何數字,它將不會存儲它。 這導致我的問題,無論如何,我可以讓它支持十進制數。另外,如果小數點是0,我不希望它顯示小數。一個具有前導零和可選小數的數字(sql)

您的幫助表示讚賞。

+1

如何如果某些書籍的章節類似1.5.1或1.4.5.3等,您是否管理?在這些情況下,數字數據類型不會有幫助,因爲它們允許單個點。我的建議是爲您的列使用varchar – 2012-03-14 06:51:01

+0

我正在考慮這個問題。但是這會讓添加圖書的用戶在章節編號中使用任何字符(字母數字 - 其他字符),這是我不想要的!另外,我希望它沒有領先。 除了所有這些,這將允許用戶添加一個名爲01的章節和一個名爲1的章節和一個名爲0001等的章節。 – shnisaka 2012-03-14 06:56:38

+2

您應該將數據存儲在數據庫中,而不是數據+格式。 – 2012-03-14 07:02:28

回答

4

您不應該以這種方式存儲數字。你應該做的是將它存儲爲十進制並從數據庫中檢索時將其格式化。

例如,如果這是一個表的模式,

CREATE TABLE amount (value decimal(5,2)); 

在PHP數量可以格式化一樣,

$res = mysql_query("select * from amount"); 
while($row = mysql_fetch_assoc($res)){ 
    printf ("%07.2f", $row['value']); 
} 

printf函數的格式將打印2.90002.90

+0

請詳細解釋一下,我如何做到這一點?如果可能,給我一些例子 – shnisaka 2012-03-14 06:59:13

+0

格式化您的前端語言的數據。什麼是您的前端語言? – 2012-03-14 07:03:21

+0

@shnisaka我用一個例子更新了我的答案。 – 2012-03-14 07:21:09

相關問題