События
31 мар., 23 - 2 апр., 23
Самое большое событие обучения SQL, Fabric и Power BI. 31 марта – 2 апреля. Используйте код FABINSIDER, чтобы сэкономить $400.
Зарегистрироваться сегодняЭтот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
применимо:Базе данных SQL Azure
Управляемый экземпляр SQL Azure
Azure Synapse Analytics
Платформенная система аналитики (PDW)
базы данных SQL в Microsoft Fabric
Символьные типы данных имеют фиксированный (nchar) или переменный (nvarchar) размер. В SQL Server 2012 (11.x) и более поздних версиях при использовании параметров сортировки дополнительных символов (SC) эти типы данных хранят полный диапазон символьных данных Юникода и используют кодировку символов UTF-16. Если указаны параметры сортировки без поддержки дополнительных символов, эти типы данных хранят только подмножество символьных данных, поддерживаемых кодировкой UCS-2.
Строковые данные фиксированного размера. n определяет размер строки в парах байтов и должен быть значением от 1 до 4000. Размер хранилища — дважды n байт. В случае с кодировкой UCS-2 размер при хранении определяется как дважды n байт, а количество хранимых символов равно n. Для кодировки UTF-16 размер хранилища по-прежнему составляет два раза n байт, но количество символов, которые можно хранить, может быть меньше n, так как дополнительные символы используют две пары байтов (также называемые суррогатными парами). Синонимами типа nchar по стандарту ISO являются типы national char и national character.
Строковые данные переменного размера. Значение n определяет размер строки в байтовых парах и может быть от 1 до 4000. Значение max указывает, что максимальный размер при хранении составляет 2^31-1 символов (2 ГБ). Размер при хранении определяется как дважды n байт + 2 байта. В случае с кодировкой UCS-2 размер при хранении определяется как дважды n байт + 2 байта, а количество хранимых символов равно n. Для кодировки UTF-16 размер хранилища по-прежнему составляет два раза n байт + 2 байта. Однако количество символов, которые могут храниться, может быть меньше n, так как дополнительные символы используют две пары байтов (также называемые суррогатными парами). Синонимами типа nvarchar по стандарту ISO являются типы national char varying и national character varying.
Распространенное заблуждение заключается в том, чтобы думать, что с nchar(n) и nvarchar(n), n определяет количество символов. Однако в nchar(n) и nvarchar(n)n определяет длину строки в байтовых парах (0–4 000). n никогда не определяет количество хранимых символов. Эта концепция аналогична определению char и varchar.
Неправильное представление происходит, так как при использовании символов, определенных в диапазоне Юникода 0 до 65 535, один символ может храниться для каждой пары байтов. Однако в более высоких диапазонах Юникода (от 65 536 до 114 111) один символ может использовать две пары байтов. Например, в столбце, определенном как nchar(10), ядро СУБД может хранить 10 символов, использующих одну пару байтов (диапазон Юникода от 0 до 65 535), но менее 10 символов при использовании двух пар байтов (диапазон Юникода 65 536 до 114 111). Дополнительные сведения о хранении символов Юникода и их диапазонах см. в разделе Различия в хранении UTF-8 и UTF-16.
Если значение n в определении данных или инструкции объявления переменной не указано, длина по умолчанию равна 1. Когда n не указано функцией CAST, длина по умолчанию равна 30.
Если вы используете nchar или nvarchar, рекомендуется:
sysname — это определяемый пользователем тип данных, который функционально эквивалентен nvarchar(128), за исключением того, что он не допускает значение NULL. Тип sysname используется для ссылки на имена объектов баз данных.
Объекты, использующие nchar или nvarchar , назначаются параметры сортировки по умолчанию базы данных, если только не назначено определенное параметры сортировки с помощью COLLATE
предложения.
SET ANSI_PADDING
всегда ON
предназначен для nchar и nvarchar.
SET ANSI_PADDING OFF
не применяется к типам данных nchar или nvarchar .
Префикс констант строки символов Юникода с буквой N
для сигнала входных данных UCS-2 или UTF-16 в зависимости от того, используется ли параметры сортировки SC.
N
Без префикса строка преобразуется в кодовую страницу по умолчанию базы данных, которая может не распознавать определенные символы. В SQL Server 2019 (15.x) и более поздних версиях при использовании параметров сортировки UTF-8 кодовая страница по умолчанию может хранить набор символов ЮникодА UTF-8.
При префиксе строковой константы с буквой N
неявное преобразование приводит к строке UCS-2 или UTF-16, если константа для преобразования не превышает максимальную длину для типа данных строки nvarchar (4000). В противном случае неявное преобразование приводит к большому значению nvarchar(max).
Предупреждение
Каждому ненулевому столбцу varchar(max) и nvarchar(max) необходимо дополнительно выделить 24 байта памяти, которые учитываются в максимальном размере строки в 8060 байт во время операции сортировки. Эти дополнительные байты могут неявно ограничивать число ненулевых столбцов varchar(max) или nvarchar(max) в таблице. При создании таблицы или во время вставки данных не возникает особых ошибок (кроме обычного предупреждения о том, что максимальный размер строки превышает максимально допустимое значение в 8060 байт). Этот большой размер строки может вызвать ошибки (например, ошибка 512), которые пользователи могут не ожидать во время некоторых обычных операций. Примерами операций могут служить обновление ключа кластеризованного индекса или сортировка полного набора столбцов.
Сведения о преобразовании символьных данных см. в разделе char и varchar. Дополнительные сведения о преобразовании между типами данных см. в разделе CAST и CONVERT.
События
31 мар., 23 - 2 апр., 23
Самое большое событие обучения SQL, Fabric и Power BI. 31 марта – 2 апреля. Используйте код FABINSIDER, чтобы сэкономить $400.
Зарегистрироваться сегодня