2014-01-21 3 views
7

Я читал все о varchar против nvarchar. Но я не видел ответа на то, что я считаю простым вопросом. Как определить длину столбца nvarchar? Для varchar это очень просто: мое описание, например, может содержать 100 символов, поэтому я определяю varchar (100). Теперь мне говорят, что нам нужно интернационализировать и поддерживать любой язык. Означает ли это, что мне нужно изменить столбец описания на nvarchar (200), т. Е. Просто удвоить длину? (И я игнорирую все другие вопросы, связанные с интернационализацией на данный момент.)Определение длины Nvarchar

Простенько ли это?

ответ

12

В целом это то же самое, что и для varchar. Число по-прежнему является максимальным количеством символов, а не длиной данных.

nvarchar(100) допускает 100 символов (что потенциально может потреблять 200 байт в SQL Server).

Возможно, вы захотите, чтобы разные культуры могли принимать больше символов, чтобы выразить одно и то же.

Исключением из этого является, однако, если вы используете сопоставление SC (который поддерживает supplementary characters). В этом случае один символ может принимать до 4 байтов.

В худшем случае было бы удвоить объявленное значение символа.

+1

Хммм. На другом сайте MS я видел этот комментарий из MS MVP, который, кажется, противоречит тому, что вы говорите: Обратите внимание, что nvarchar (50) не означает 50 символов - это означает 50 двойных байтов. Таким образом, вы можете хранить только 25 символов, для которых требуется 4 байта в nvarchar (50). Я не говорю, что ты ошибаешься, просто я смущен. –

+1

@ KaneJeeves - Это неправильно. Легко проверить себя! 'DECLARE @T TABLE (C NVARCHAR (5)); INSERT INTO @T VALUES («Неверно»), SELECT C, DATALENGTH (C) FROM @ T'. У вас есть ссылка? –

+0

Удивительный, спасибо. Также доказывает, что вы не всегда можете доверять тому, что кто-то с сертификацией всегда прав. –

Смежные вопросы