varchar(N)中的N代表什么?

5
描述数据库字段时,varchar(N)中的N是指什么?是字符数还是字节数?另外,当使用UTF-8时,一个字符可能会使用多个字节。
4个回答

3

这是字符的最大数量。

nvarchar(1000) = 最多可以输入1000个Unicode字符。


3

varchar 无法存储Unicode字符,因此 varchar(n) 中的 n 指的是字符数和字节数。而在 nvarchar(n) 中,n 表示Unicode字符的数量,存储大小为 n 倍的两个字节。

如果您查询 information_schema.columns,将会有两个特别关注的列:CHARACTER_MAXIMUM_LENGTHCHARACTER_OCTET_LENGTH。前者保存字符数,后者保存字节数。


1
不是字符数,而是字节对数。请参见https://learn.microsoft.com/en-us/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql?view=sql-server-ver16中的“误解”。 - Dojo

1
  1. 字符数量

0

它都不是!对于nchar / nvarchar,它是字节对的数量(因此使用代理字节对编码的字符使用两个字节对,在UTF-16中)。

自从这个问题被错误回答以来已经过去了很多年,问题中所做的断言,即varchar仅为单字节编码,也变得不正确。可以有UTF-8编码的varchar列,并且varchar(n)指定的是字节数,而不是字符数(UTF-8编码需要最多4个字节才能表示一个字符)。

Microsoft docs


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