我刚刚开始在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英语'是 被认为是正确的。