sqlite中的字符串存储大小

Mik*_*ter 22 sqlite

使用大量的经过SQL ServerSQL Server Compact我最近开始使用Sqlite.我目前正在Sqlite中创建表,并注意到在定义字符串列时似乎没有任何需要输入字符串长度限制.在SQL Server255个字符的字符串中,数据类型定义如下:varchar(255).在SQL Server Compact它中定义如下:nvarchar(255).

但是,Sqlite看起来,列数据类型可以简单地定义为text,而不输入任何大小限制.有没有办法在sqlite中定义大小限制?或者这甚至不是必要的?

dan*_*n04 22

SQLite确实允许你编写VARCHAR(255)或者NVARCHAR(255),但是唯一相关的部分是CHAR(它给出了"文本亲和性"列).允许括号中的数字与标准SQL兼容,但会被忽略.

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

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

  • @Lukas:当然会。我的意思是,“声明”列为“VARCHAR(1000000000)”与“VARCHAR(255)”在 SQLite 中并没有什么区别。也许我应该措辞更好。 (3认同)

gle*_*udr 17

SQLite中有一个可管理的字符串或blob限制.默认值为10 ^ 9个字节.请参阅文档 BTW您无需在列声明中指定它.