SQL VARCHAR length



我读了很多关于这个主题的文章和SO问题,但他们所做的只是让我更加困惑。

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

在某些地方,它说可以创建最大长度为255(即VARCHAR(255((的VARCHAR-我不明白它是指255字节还是字符。

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

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

如何保存真正长的文本?它会被拆分成多列吗?

VARCHAR以每个符号1个字节的形式存储字符串(与每个字符可以使用2个或更多字节的nvarchar相反(。您可以在此处阅读详细信息。

一个常见的误解是认为CHAR(n(和VARCHAR(n(,n定义了字符数。但在CHAR(n(和VARCHAR(n(中,n定义了以字节(0-8000(为单位的字符串长度。n从不定义可以存储的字符数。这与NCHAR(n(和NVARCHAR(n(的定义类似。之所以会出现这种误解,是因为在使用单字节编码时,CHAR和VARCHAR的存储大小是n字节,字符数也是n。然而,对于UTF-8等多字节编码,较高的Unicode范围(128-1114111(会导致一个字符使用两个或多个字节。例如,在定义为CHAR(10(的列中,数据库引擎可以存储使用单字节编码的10个字符(Unicode范围0-127(,但在使用多字节编码时(Unicode范围128-1114111(,可以存储少于10个字符。有关Unicode存储和字符范围的更多信息,请参阅UTF-8和UTF-16之间的存储差异。

最新更新