2012-04-16 62 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英语'是 被认为是正确的。