2011-05-13 93 views
7

可能重複:
Which MySQL Datatype to use for storing boolean values?什麼是在MySQL中存儲布爾值的數據類型?

我是一個.NET程序員,使用MySQL數據庫在我生命中的第一次。

我想存儲布爾值,MySQL有BIT,但此數據類型的.NET轉換爲UINT64

還有另一種數據類型TINYINT(1),其.NET相當於System.Boolean這將符合我的目的。

但我爲什麼會用TINYINT(1)(可存儲123一樣,22的值),而不是BIT將採取更多的空間比BIT也(我猜)?使用它可能是合法的,但我不認爲它是符合邏輯的。

有人能幫助並澄清我的疑問嗎?

+0

你是什麼「的.NET轉換」是什麼意思?你如何將你的db值轉換成.net類型?如果你手動轉換,你不能使用:Convert.ToBoolean(reader [「columnName」])這應該將BIT值轉換爲布爾值沒有問題。 – coalvilledave 2011-05-13 07:54:13

+0

如果您正在使用DataReader並執行上述轉換,那麼它工作正常。 但如果你起訴DataTable並嘗試做轉換,那麼它不起作用。 – 2011-05-13 09:56:38

回答

6

MySQL有BOOL和BOOLEAN,但它們是TINYINT(1)的同義詞。零值被認爲是錯誤的。非零值被認爲是真實的。我想有人在MySQL的想法,並決定TINYINT(1)是首選的方式去。我一直都是這樣使用的。

有這個類似的問題,一些更多的信息:What is the difference between BIT and TINYINT in MySQL?

2

BIT不按照您認爲的方式工作es,一般用於存儲bitfieldsBIT(M)需要約(M+7)/8(整數算術)字節的存儲。無論如何,使用BIT(1)需要一整個字節,與TINYINT相同,所以不用擔心。

如果您有興趣,各種類型的存儲要求位於here

相關問題