32

使用了很多SQL Serverand之后SQL Server Compact,我最近开始使用Sqlite. 我目前正在 Sqlite 中创建表,并注意到在定义字符串列时似乎不需要输入字符串长度限制。在SQL Server255 个字符的字符串中,数据类型定义如下:varchar(255). 其中SQL Server Compact定义如下:nvarchar(255).

但是,在 中Sqlite,列数据类型似乎可以简单地定义为text,而无需输入任何大小限制。有没有办法在 sqlite 中定义大小限制?或者这甚至没有必要?

4

2 回答 2

31

SQLite 确实允许您编写VARCHAR(255)or NVARCHAR(255),但唯一相关的部分是CHAR(它给出了“文本关联”列)。括号中的数字允许与标准 SQL 兼容,但被忽略。

在 SQLite 中,几乎不需要对字符串进行长度限制,因为 (1) 它不会影响字符串在磁盘上占用的空间量,并且 (2) 对字符串长度没有任意限制(除了SQLITE_MAX_LENGTH)可以用于INDEX.

如果您确实需要对列中的字符数进行限制,只需添加一个约束,例如CHECK(LENGTH(TheColumn) <= 255).

于 2013-07-22T22:17:12.797 回答
22

SQLite 中有一个可管理的字符串或 blob 限制。默认值为 10^9 字节。请参阅文档 顺便说一句,您无论如何都不需要在列声明中指定它。

于 2013-07-22T10:22:55.990 回答