2011-05-24 119 views
24

我是新来的sqlite。我想知道sqlite中varchar数据类型的最大大小限制吗?sqlite中varchar数据类型的最大大小限制是多少?

有人可以提供一些与此相关的信息吗?我搜索了sqlite.org网站,他们give the answer as

问:什么是SQLite中一个VARCHAR的最大尺寸是多少?

答: SQLite不强制执行VARCHAR的长度。你可以声明一个VARCHAR(10),SQLite会很乐意让你放入500 个字符。它会保持所有500个字符不变 - 它不会截断。

但我想知道sqlite中varchar数据类型的确切最大大小限制。

+0

您也可以参考http://www.sqlite.org/limits.html – taro 2011-05-24 11:51:40

回答

28

http://www.sqlite.org/limits.html

字符串或BLOB

在SQLite中一个 字符串或BLOB的最大字节数由 预处理器宏 SQLITE_MAX_LENGTH定义的最大长度。 此宏的默认值为10亿(1千 百万或1,000,000,000)。您可以 加薪或使用命令行选项 像这样在 编译时减小该值:

-DSQLITE_MAX_LENGTH = 123456789当前实现只会 支持字符串或BLOB长度可达 231-1或2147483647.一些内置的 函数(如hex())在该点之前可能会失败 。在 安全敏感的应用程序中,它最好不要试图增加 的最大字符串和blob长度。在 事实上,如果可能的话,您最好将 的最大字符串和BLOB长度降低到 ,其中一些更多地在几个 万的范围内。

在部分SQLite的INSERT和 SELECT处理中,数据库中每行的完整 内容为 编码为单个BLOB。因此, SQLITE_MAX_LENGTH参数也 确定连续的最大字节数 。

+1

仅供参考:假定为1字节字符,则略小于GB。 (或者只有一个GB,如果以10为基础测量位) – 2012-08-08 19:02:38

+0

SQLite中1个字节中可以存储多少个字符? – renatov 2015-04-08 18:20:51

+1

@renatov我不认为你可以用字符来衡量,它取决于你用于数据库https://www.sqlite.org/datatype3.html的编码和正在输入的字符。例如,UTF-8每个字符可以有1到4个字节,无论ASCII只使用1个http:// stackoverflow。com/questions/5290182/how-many-bytes-does-one-unicode-character-take – 2015-04-09 02:15:17

相关问题