2011-06-08 63 views
0

我要存儲isdCodes這是格式0091001009751009665等在數據庫中,初始將基本上從零開始。我試圖使用int作爲數據類型與無符號屬性,但它似乎並沒有工作。哪種數據類型適合存儲這種類型的值?用於存儲從零開始的整數的MySQL數據類型?

+0

您可以使用int,但其輸出在格式化00 {INT} ... – 2011-06-08 13:50:05

+0

@ Good.Dima不工作,因爲IDD前綴是在大多數情況下,'00',但並非總是如此。它在大多數情況下以'0'開始,但並非總是如此。 – 2011-06-08 14:03:26

回答

3

不工作,因爲IDD前綴是在大多數情況下00但並非總是如此。它在大多數情況下始於0,但並不總是如此。

由於前導零的數量關係,(即0091091),我會去在這種情況下varchar

如果你真的想使用一些數字類型,我想你可以在數字前加上一個1來保持零,但這會有點破解。

+0

不會,但是沒關係,因爲我只會存儲整數? – 2011-06-08 13:51:43

+0

使用varchar數字?除非您存儲千兆字節的這些數字,否則我不會看到它的主要問題。如果前導零的數量實際上很重要,我不認爲數字類型是合適的。 – aioobe 2011-06-08 13:53:22

+0

不需要使用varchar和concatenation ...如果使用zerofilled值,db僅在輸出信息時關注前導零。一個'SELECT * FROM table WHERE value = 1'將選擇值爲1的行,不管它有多少前導零。 – Nikoloff 2011-06-08 14:08:37

-1

您可以使用ZEROFILL,即:

CREATE TABLE test (value int zerofill); 

INSERT INTO test values(1), (20), (515); 
+0

使用零填充的問題是它會填滿所有的零,例如,如果我decalred int(11),那麼它將填寫值與00000000001而不是隻是'001' – 2011-06-08 13:54:50

+0

您可以更改字段的精度,但我不知道這是否會有所幫助。你將存儲什麼價值?不同的數字,全部以'00'開頭?這對我來說沒有什麼意義,但是因爲你對精準度給予的不滿意,我不確定你想要完成什麼...... – Nikoloff 2011-06-08 13:57:38

+0

@Ibrahim,更新了我的選擇'1'的答案 - > '001'和'1000' - >'001000'。 – aioobe 2011-06-08 14:04:02

0

我會用一些VARCHAR對於自ISD代碼不是你想「與計算」的東西,是一個數字序列,而比整數本身。領先的000事情表明非常好。

編輯 剛纔看到存在像8~10這樣的IDD前綴。所以沒有辦法使用類似數字的數據類型。如果你想能夠存儲任何ISD代碼,你必須使用類似varchar或類似的東西。