我刚开始在SQLite的世界里,正在研究字段定义,
我是否认为SQLite中的Varchar
/ Char
和text
字段之间似乎没有区别?设置字段长度也有影响吗?
CompanyName varchar (40) NOT NULL ,
最后,如果我要给布尔字段赋予默认值,我会使用1
或True
作为默认值吗?
答案 0 :(得分:0)
我认为两者之间似乎没有区别 sQLite中的Varchar / Char和文本字段?
是的,你是对的。它们与sqlite完全相同。
设置字段长度是否也有影响?
也正确;请注意,没有任何东西阻止上层进行某种形式的检查/执行长度。
如果我要给布尔字段赋予默认值,我会使用1或 是默认值吗?
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
备注有关true / false的内容SQLite用1表示true,用0表示false:
sqlite> select 3 > 2;
1
sqlite> select 3 < 2;
0
SQLite认为真或假的内容更复杂。我只引用documentation:
将SQL表达式的结果转换为布尔值SQLite 首先将结果以与CAST相同的方式将结果转换为NUMERIC值 表达。 NULL或零值(整数值0或实际值0.0) 被认为是假的。所有其他值都被认为是真实的。
例如,值NULL,0.0,0,'english'和'0'都是 被认为是假的。值1,1.0,0.1,-0.1和'1english'是 被认为是真的。