2016-02-29 25 views
1

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

+1

我真的不认为它是重复的,因为我仍然不知道我的数据类型必须是多少个n个字符。 – John

回答

2

如果您需要中文字符,您需要使用nvarchar(n)并指定长度为n,这是合理的。

这些是字符您正在定义,并且您需要的空间是该数字的两倍(因为SQL Server中的任何Unicode字符总是使用2个字节)。

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

我会推荐不是只是使用nvarchar(max)的一切,出于懒惰考虑什么大小,你真的需要!由于它是一个非常大的专栏,因此您无法将其编入索引。

0

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

对行大小的限制处理here。请参阅@marc_s的回答以了解使用max的限制。

+0

如果我创建大量列,这不会导致任何问题? – John

+0

你将无法**索引**这样的列 - 我会建议***不*** ***只是使用'nvarchar(max)'的一切,出于懒惰思考你多大**真的需要 - 对Unicode字符使用'nvarchar' - 但选择**有意义的,有用的**长度! –

+0

但这就是我在这里问的原因。 10个汉字有意义的长度是多少?那会是一个nvarchar(10)吗? – John

相关问题