SQL 服务器中具有 n 个字符的文本的数据类型和大小是什么?

Which datatype and size for text with n characters in SQL Server?

我无法理解如何为我的文本定义一个大小适合我的最大值的列。字符数。在 Oracle 中,我可以创建一个足以容纳 10 个字符的 VARCHAR2(10 CHAR)。大小取决于数据库中使用的编码。但是我如何在 SQL 服务器中做到这一点?我使用 varchar(10) 吗? nvarchar(10)?我希望能够存储各种字符(甚至中文)。

如果您使用 nvarchar(max),这将允许所有字符集使用任意数量的字符。系统将优化存储。

解决了行大小限制 here。有关使用 max.

的限制,请参阅@marc_s 的回答

如果你想要汉字,你需要使用nvarchar(n)并指定一个有意义的长度n

这些是您正在定义的 个字符 ,您需要的 space 是该数字的两倍(因为 SQL 服务器中的任何 Unicode 字符总是使用2 个字节)。

最大。大小为 nvarchar(4000) - 或者如果您确实需要更多,请使用 nvarchar(max)(最多 10 亿 个字符)。

我建议 NOT 只对所有内容使用 nvarchar(max),因为懒得考虑你真正需要的尺寸!由于它是一个非常大的列,您将无法为其编制索引。