Когда мне следует использовать Unicode-константу SQL Server 'N'? - PullRequest
4 голосов
/ 09 февраля 2010

Я изучал использование константы Unicode 'N' в моем коде, например:

select object_id(N'VW_TABLE_UPDATE_DATA', N'V');

insert into SOME_TABLE (Field1, Field2) values (N'A', N'B');

После некоторого прочтения, когда его использовать, и мне все еще не совсем ясно, при каких обстоятельствах его следует и не следует использовать.

Это так же просто, как использовать его, когда типы данных или параметры ожидают Unicode-тип данных (согласно приведенным выше примерам), или это более изощренно?

Следующий сайт Microsoft дает объяснение, но мне также немного неясно, какие термины он использует http://msdn.microsoft.com/en-us/library/ms179899.aspx

Или точно:

Константы Unicode интерпретируются как Данные Unicode, и не оцениваются используя кодовую страницу. Unicode константы действительно есть сопоставление. Это сопоставление в первую очередь контролирует сравнения и чувствительность к регистру. Unicode константы назначены параметры сортировки по умолчанию текущая база данных, если только Предложение COLLATE используется для указания сверка.

Что это значит:

  • 'оценивается с использованием кодовой страницы'?
  • Упорядочение

Я понимаю, что это довольно широкий вопрос, но любые ссылки или помощь приветствуются.

Спасибо

Ответы [ 2 ]

1 голос
/ 09 февраля 2010

Национальные символы nchar () и nvarchar () используют два байта на символ и поддерживают международный набор символов - подумайте в Интернете. Префикс N преобразует строковую константу в два байта на символ. Так что, если у вас есть люди из разных стран и вы хотите, чтобы их имена были правильно сохранены - что-то вроде:

CREATE TABLE SomeTable ( 
   id int
  ,FirstName nvarchar(50)
  );

Тогда используйте:

INSERT  INTO SomeTable
        ( Id, FirstName )
VALUES  ( 1, N'Guðjón' );

и

SELECT  *
FROM    SomeTable
WHERE   FirstName = N'Guðjón';
1 голос
/ 09 февраля 2010

Is it as simple as using it when data types or parameters expect a unicode data type * * 1002

В значительной степени.

Чтобы ответить на другие ваши вопросы:

A кодовая страница - это другое имя для кодировки набора символов. Например, кодовая страница windows 1255 кодирует иврит. Обычно это используется для 8-битных кодировок для символов. Что касается вашего вопроса, строки могут оцениваться с использованием разных кодовых страниц (поэтому один и тот же битовый шаблон может интерпретироваться как японский или арабский символ, в зависимости от того, какая кодовая страница использовалась для его оценки).

Сортировка - это то, как SQL Server должен упорядочивать строки - это зависит от кодовой страницы, так как вы бы по-разному упорядочивали строки на разных языках. См. эту статью для примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...