我剛剛開始在SQLite的世界中,我正在看字段定義, 我正確地認爲SQLite中的Varchar
/Char
和text
字段之間似乎沒有區別嗎?設置字段長度還有什麼影響?SQLite字段定義
CompanyName varchar (40) NOT NULL ,
,最後如果我是給一個默認值一個布爾場我會用1
或True
作爲默認?
我剛剛開始在SQLite的世界中,我正在看字段定義, 我正確地認爲SQLite中的Varchar
/Char
和text
字段之間似乎沒有區別嗎?設置字段長度還有什麼影響?SQLite字段定義
CompanyName varchar (40) NOT NULL ,
,最後如果我是給一個默認值一個布爾場我會用1
或True
作爲默認?
我正確地認爲 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英語'是 被認爲是正確的。