在sqlite中,varchar数据类型的最大大小限制是多少?

47

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

有人能提供与此相关的信息吗? 我在sqlite.org网站上搜索过,他们给出的答案如下

问. SQLite中VARCHAR的最大大小是多少?

答. SQLite不强制VARCHAR的长度。 您可以声明一个VARCHAR(10),SQLite很乐意让您将500个字符放入其中。 它将保持所有500个字符完好无损 - 它永远不会截断。

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


你也可以阅读这个网址:http://www.sqlite.org/limits.html - taro
1个回答

50

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

字符串或BLOB的最大长度

SQLite中字符串或BLOB的最大字节数由预处理宏SQLITE_MAX_LENGTH定义。 该宏的默认值为10亿(10亿或1,000,000,000)。您可以使用命令行选项在编译时提高或降低此值,例如:

-DSQLITE_MAX_LENGTH=123456789 当前实现仅支持长度达到231-1或2147483647的字符串或BLOB。一些内置函数(如hex())可能在此之前失败。在安全敏感的应用程序中,最好不要尝试增加最大字符串和blob长度。事实上,如果可能的话,您最好将最大字符串和blob长度降低到几百万左右。

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


3
参考:假设使用 1 字节字符,这略小于 1GB(如果基于10进制衡量比特,则正好为1GB)。 - Tim Swast
在SQLite中,一个字节可以存储多少个字符? - renatov
1
@renatov 我认为你不能用字符来衡量,这取决于你在数据库中使用的编码https://www.sqlite.org/datatype3.html和输入的字符。例如,UTF-8每个字符可以有1到4个字节,而ASCII只使用1个字节https://dev59.com/Km435IYBdhLWcg3wqB4x - Felipe Sabino
@renatov 哦,只是为了明确我说ASCII只是举例,因为它似乎不受sqlite支持 https://www.sqlite.org/datatype3.html - Felipe Sabino
2
@renatov 这是一个非常好的视频,展示了utf-8和字符串编码的工作原理 :) https://www.youtube.com/watch?v=MijmeoH9LT4 - Felipe Sabino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接