Дополнительные символы
Строки nchar и nvarchar хранят каждый символ как 16-разрядное значение в кодировке UCS-2. Эта кодировка, определенная версиями Юникода до 1996, поддерживает символы в диапазоне от U+0000 до U+FFFF. В более новых версиях Юникода были определены добавочные символы в диапазоне от U+10000 до U+10FFFF, называемые дополнительными символами. Эти символы хранятся как пары 16-разрядных значений, называемые суррогатными парами, в кодировке UTF-16. Все новые параметры сортировки уровня 100 поддерживают лингвистическую сортировку при использовании дополнительных символов.
На использование дополнительных символов налагаются следующие ограничения.
Они могут применяться в операциях сортировки и сравнения только в параметрах сортировки версии 90 или более новых.
Поскольку дополнительные символы хранятся в виде двух 16-разрядных значений, функция LEN() возвращает значение 2 для каждого из дополнительных символов, содержащихся в строке аргумента. Аналогично функции CHARINDEX и PATINDEX неправильно представляют дополнительные символы, появляющиеся в строках символов.
Функции LEFT, RIGHT, SUBSTRING, STUFF и REVERSE могут разорвать любые суррогатные пары, что может привести к непредвиденным результатам.
Не поддерживается применение дополнительных символов с символами-шаблонами подчеркиванием (_), процентом (%) и символом крышки (^).
Они также не поддерживаются в метаданных, например в именах объектов базы данных.
См. также