2014-01-21 162 views
7

我读过关于varchar与nvarchar的所有信息。但是我没有看到我认为是一个简单问题的答案。你如何确定你的nvarchar列的长度?对于varchar非常简单:例如,我的描述可以有100个字符,所以我定义了varchar(100)。现在我被告知我们需要国际化和支持任何语言。这是否意味着我需要将我的描述列更改为nvarchar(200),即简单地加倍长度? (而且我忽略了目前与国际化有关的所有其他问题。)确定Nvarchar长度

这是简单的吗?

回答

12

一般情况下与varchar确实相同。该数字仍然是字符的最大数量而不是数据长度。

nvarchar(100)允许有100个字符(这可能会消耗SQL Server中的200个字节)。

您可能想要考虑到不同的文化可能需要更多的角色才能表达同一个事物。

然而,这种情况的一个例外是如果是您使用的是SC核对(支持supplementary characters)。在这种情况下,单个字符最多可能占用4个字节。

所以最坏的情况是将声明的字符值加倍。

+1

嗯。在另一个MS站点上,我看到了MS MVP中的这一评论,这似乎与您所说的内容相矛盾:请注意,nvarchar(50)并不意味着50个字符 - 它表示50个双字节。因此,您只能在nvarchar(50)中存储需要4个字节的25个字符。我不是说你错了,只是我很困惑。 –

+1

@KaneJeeves - 那是错误的。易于测试自己! 'DECLARE @T TABLE(C NVARCHAR(5)); INSERT INTO @T VALUES('Wrong'); SELECT C,DATALENGTH(C)FROM @ T'。你有链接吗? –

+0

太棒了,谢谢。同时证明,你不能总是相信拥有认证的人永远是对的。 –