Поделиться через


Дополнительные символы

Типы данных nchar и nvarchar хранят каждый символ как 16-разрядное значение в кодировке UCS-2. Эта кодировка, определенная версиями Юникода до 1996, поддерживает символы в диапазоне от U+0000 до U+FFFF. В более новых версиях Юникода были определены добавочные символы в диапазоне от U+10000 to U+10FFFF, называемые дополнительными символами. Эти символы хранятся как пары 16-разрядных значений, называемые суррогатными парами, в кодировке UTF-16. Все новые параметры сортировки уровня 100 поддерживают лингвистическую сортировку при использовании дополнительных символов. 

На использование дополнительных символов налагаются следующие ограничения.

  • Они могут применяться в операциях сортировки и сравнения только в параметрах сортировки версии 90 или более новых.

  • Поскольку дополнительные символы хранятся в виде двух 16-разрядных значений, функция LEN() возвращает значение 2 для каждого из дополнительных символов, содержащихся в строке аргумента. Аналогично функции CHARINDEX и PATINDEX неправильно представляют дополнительные символы, появляющиеся в строках символов.

  • Функции LEFT, RIGHT, SUBSTRING, STUFF и REVERSE могут разорвать любые суррогатные пары, что может привести к непредвиденным результатам.

  • Не поддерживается применение дополнительных символов с символами-шаблонами: подчеркиванием (_), процентом (%) и символом крышки (^).

  • Они также не поддерживаются в метаданных (например, в именах объектов базы данных).

Для скрипта Transact-SQL, который связан с данным сценарием, см. образец Операции над строками с учетом дополнений. Дополнительные сведения об образцах см. в разделе Вопросы установки образцов кода и образцов баз данных SQL Server.

См. также

Основные понятия