0

我刚从 SQLite 的世界开始,正在查看字段定义,我是否认为SQLite 中的Varchar/Chartext字段之间似乎没有区别?设置字段长度也有影响吗?

CompanyName varchar (40) NOT NULL ,

最后,如果我要为布尔字段提供默认值,我会使用1还是True作为默认值?

4

1 回答 1

0

我是否认为 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”被认为是正确的。

于 2012-04-16T12:07:37.100 回答