sqlite 中的字符串存储大小

问题描述 投票:0回答:2

在使用了很多

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

但是,在

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

sqlite
2个回答
45
投票

SQLite 确实允许您编写

VARCHAR(255)
NVARCHAR(255)
,但其中唯一相关的部分是
CHAR
(它给出了“文本亲和力”列)。括号中的数字是为了与标准 SQL 兼容而允许的,但会被忽略。

在 SQLite 中,几乎不需要对字符串进行长度限制,因为

    它不会影响字符串在磁盘上占用的空间量并且
  1. SQLITE_MAX_LENGTH
    中可使用的字符串长度没有任意限制(
    INDEX
    除外)。
如果您确实需要对列中的字符数进行限制,只需添加类似

CHECK(LENGTH(TheColumn) <= 255)

 的约束即可。


25
投票
SQLite 中有可管理的字符串或 blob 限制。默认为 10^9 字节。

参见文档 顺便说一句,您无论如何都不需要在列声明中指定它。

© www.soinside.com 2019 - 2024. All rights reserved.