SQL VARCHAR长度

问题描述

我阅读了很多有关该主题的文章和问题,但是他们所做的只是让我更加困惑。

我试图了解VARCHAR可以容纳的最长字符串以及如何定义它。

在某些地方,它说可以创建最大长度为255(即VARCHAR(255))的VARCHAR-我不知道这是否表示255个字节或字符。

在其他地方,它说VARCHAR最多可以容纳8000个字节-然后取决于语言(如果每个字符是1个字节(例如拉丁语或更多),它决定了最长字符串的长度)。

简单来说,VARCHAR(n)中的n代表什么,n的范围是什么? 是字节吗?它是一个数字吗?在0-255之间?在0-8000之间?

如何保存很长的文本?它会分成多列吗?

解决方法

VARCHAR将字符串存储在每个符号1个字节中(与nvarchar相反,每个字符可以使用2个或更多字节)。您可以阅读详细信息here.

一个常见的误解是认为CHAR(n)和VARCHAR(n),n定义了字符数。但是在CHAR(n)和VARCHAR(n)中,n定义了以字节为单位的字符串长度(0-8,000)。 n永远不会定义可以存储的字符数。这类似于NCHAR(n)和NVARCHAR(n)的定义。产生误解的原因是,当使用单字节编码时,CHAR和VARCHAR的存储大小为n个字节,字符数也为n。但是,对于UTF-8等多字节编码,较高的Unicode范围(128-1,114,111)导致一个字符使用两个或更多字节。例如,在定义为CHAR(10)的列中,数据库引擎可以存储使用单字节编码(Unicode范围0-127)的10个字符,但是在使用多字节编码(Unicode范围128-Unicode的情况下,少于10个字符) 1,111)。有关Unicode存储和字符范围的更多信息,请参见UTF-8和UTF-16之间的存储差异。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...