2012-04-16 61 views
0

我剛剛開始在SQLite的世界中,我正在看字段定義, 我正確地認爲SQLite中的Varchar/Chartext字段之間似乎沒有區別嗎?設置字段長度還有什麼影響?SQLite字段定義

CompanyName varchar (40) NOT NULL , 

,最後如果我是給一個默認值一個布爾場我會用1True作爲默認?

回答

0

我正確地認爲 Varchar/Char和sQLite中的文本字段之間沒有區別嗎?

是的你是對的。它們都與sqlite相同。

還設置字段長度有什麼影響?

也正確;請注意,沒有任何東西阻止上層執行某種形式的檢查/執行長度。

如果我給一個布爾型字段默認值,我會使用1或 True作爲默認值?

如顯示於以下1(或任何非零數值):

sqlite> select 1 where True; 
Error: no such column: True 
sqlite> select 1 where 1; 
1 
sqlite> select 1 where "True"; 
sqlite> select 1 where "False"; 
sqlite> select 1 where 0; 
sqlite> select 1 where -1; 
1 

備註約真/與源碼

SQLite的假表達真用1和假與0:

sqlite> select 3 > 2; 
1 
sqlite> select 3 < 2; 
0 

SQLite認爲是真或假的是c omplicated。我只是引用documentation

到SQL表達式的結果轉換成一個布爾值,SQLite的 第一注塑結果以同樣的方式作爲CAST 表達的數值。 NULL或零值(整數值0或實數值0.0) 被認爲是錯誤的。所有其他值都被認爲是正確的。

例如,值NULL,0.0,0,'english'和'0'都被認爲是錯誤的 。值1,1.0,0.1,-0.1和'1英語'是 被認爲是正確的。