我刚从 SQLite 的世界开始,正在查看字段定义,我是否认为SQLite 中的Varchar
/Char
和text
字段之间似乎没有区别?设置字段长度也有影响吗?
CompanyName varchar (40) NOT NULL ,
最后,如果我要为布尔字段提供默认值,我会使用1
还是True
作为默认值?
我是否认为 SQLite 中的 Varchar / Char 和文本字段之间似乎没有区别?
是的,你是对的。它们对 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 的 true/false 的备注
SQLite 用 1 表示真,用 0 表示假:
sqlite> select 3 > 2;
1
sqlite> select 3 < 2;
0
SQLite 认为是真还是假的更复杂。我将引用文档:
要将 SQL 表达式的结果转换为布尔值,SQLite 首先以与 CAST 表达式相同的方式将结果转换为 NUMERIC 值。NULL 或零值(整数值 0 或实值 0.0)被认为是错误的。所有其他值都被认为是真的。
例如,值 NULL、0.0、0、'english' 和 '0' 都被认为是错误的。值 1、1.0、0.1、-0.1 和“1english”被认为是正确的。