1. Главная страница » Компьютеры » Nvarchar тип данных sql

Nvarchar тип данных sql

Автор: | 16.12.2019

ОБЛАСТЬ ПРИМЕНЕНИЯ: SQL Server База данных SQL Azure Azure Synapse Analytics (хранилище данных SQL) Parallel Data Warehouse APPLIES TO: SQL Server Azure SQL Database Azure Synapse Analytics (SQL DW) Parallel Data Warehouse

Символьные типы данных имеют фиксированный (nchar) или переменный (nvarchar) размер. Character data types that are either fixed-size, nchar, or variable-size, nvarchar. Начиная с SQL Server 2012 (11.x) SQL Server 2012 (11.x) при использовании параметров сортировки с поддержкой дополнительных символов эти типы данных хранят весь диапазон символьных данных Юникод и используют кодировку UTF-16. Starting with SQL Server 2012 (11.x) SQL Server 2012 (11.x) , when a Supplementary Character (SC) enabled collation is used, these data types store the full range of Unicode character data and use the UTF-16 character encoding. Если указаны параметры сортировки без поддержки дополнительных символов, эти типы данных хранят только подмножество символьных данных, поддерживаемых кодировкой UCS-2. If a non-SC collation is specified, then these data types store only the subset of character data supported by the UCS-2 character encoding.

Аргументы Arguments

nchar [ ( n ) ] nchar [ ( n ) ]
Строковые данные фиксированного размера. Fixed-size string data. n определяет размер строки в парах байтов и должно иметь значение от 1 до 4000. n defines the string size in byte-pairs and must be a value from 1 through 4,000. Размер хранилища — дважды n байт. The storage size is two times n bytes. В случае с кодировкой UCS-2 размер при хранении определяется как дважды n байт, а количество хранимых символов равно n. For UCS-2 encoding, the storage size is two times n bytes and the number of characters that can be stored is also n. Для кодировки UTF-16 размер при хранении также равен дважды n байт, но количество хранимых символов может быть меньше n, так как дополнительные символы используют две пары байтов (также называются суррогатными парами). For UTF-16 encoding, the storage size is still two times n bytes but the number of characters that can be stored may be smaller than n because Supplementary Characters use two byte-pairs (also called surrogate-pair). Синонимами типа nchar по стандарту ISO являются типы national char и national character. The ISO synonyms for nchar are national char and national character.

nvarchar [ ( n | max ) ] nvarchar [ ( n | max ) ]
Строковые данные переменного размера. Variable-size string data. n определяет размер строки в парах байтов и может иметь значение от 1 до 4000. n defines the string size in byte-pairs and can be a value from 1 through 4,000. Значение max указывает, что максимальный размер при хранении составляет 2^30-1 символов (2 ГБ). max indicates that the maximum storage size is 2^30-1 characters (2 GB). Размер при хранении определяется как дважды n байт + 2 байта. The storage size is two times n bytes + 2 bytes. В случае с кодировкой UCS-2 размер при хранении определяется как дважды n байт + 2 байта, а количество хранимых символов равно n. For UCS-2 encoding, the storage size is two times n bytes + 2 bytes and the number of characters that can be stored is also n. Для кодировки UTF-16 размер при хранении также равен дважды n байт + 2 байта, но количество хранимых символов может быть меньше n, так как дополнительные символы используют две пары байтов (также называются суррогатными парами). For UTF-16 encoding, the storage size is still two times n bytes + 2 bytes but the number of characters that can be stored may be smaller than n because Supplementary Characters use two byte-pairs (also called surrogate-pair). Синонимами типа nvarchar по стандарту ISO являются типы national char varying и national character varying. The ISO synonyms for nvarchar are national char varying and national character varying.

Remarks Remarks

Часто ошибочно считают, что в типах данных NCHAR(n) и NVARCHAR(n) число n указывает на количество символов. A common misconception is to think that NCHAR(n) and NVARCHAR(n), the n defines the number of characters. Однако на самом деле число n в NCHAR(n) и NVARCHAR(n) — это длина строки в парах байтов (0–4000). But in NCHAR(n) and NVARCHAR(n) the n defines the string length in byte-pairs (0-4,000). n никогда не определяет количество хранимых символов. n never defines numbers of characters that can be stored. То же самое верно и в отношении типов CHAR(n) и VARCHAR(n). This is similar to the definition of CHAR(n) and VARCHAR(n).
Заблуждение возникает из-за того, что при использовании символов, определенных в диапазоне Юникода 0–65 535, на каждую пару байтов приходится один хранимый символ. The misconception happens because when using characters defined in the Unicode range 0-65,535, one character can be stored per each byte-pair. Однако в старших диапазонах Юникода (65 536–1 114 111) один символ может занимать две пары байтов. However, in higher Unicode ranges (65,536-1,114,111) one character may use two byte-pairs. Например, в столбце, определенном как NCHAR(10), Компонент Database Engine Database Engine может хранить 10 символов, занимающих одну пару байтов (диапазон Юникода 0–65 535), но меньше 10 символов, занимающих две пары байтов (диапазон Юникода 65 536–1 114 111). For example, in a column defined as NCHAR(10), the Компонент Database Engine Database Engine can store 10 characters that use one byte-pair (Unicode range 0-65,535), but less than 10 characters when using two byte-pairs (Unicode range 65,536-1,114,111). Дополнительные сведения о хранении символов Юникода и их диапазонах см. в разделе Различия в хранении UTF-8 и UTF-16. For more information about Unicode storage and character ranges, see Storage differences between UTF-8 and UTF-16.

Читайте также:  Amd fx 8350 dns

Если значение n в определении данных или в инструкции объявления переменной не указано, то длина по умолчанию равна 1. When n is not specified in a data definition or variable declaration statement, the default length is 1. Когда n не задано функцией CAST, длина по умолчанию равняется 30. When n is not specified with the CAST function, the default length is 30.

Если вы используете nchar или nvarchar, мы рекомендуем: If you use nchar or nvarchar, we recommend to:

  • использовать nchar, если размеры записей данных в столбцах одинаковые; Use nchar when the sizes of the column data entries are consistent.
  • использовать nvarchar, если размеры записей данных в столбцах существенно отличаются; Use nvarchar when the sizes of the column data entries vary considerably.
  • использовать nvarchar(max) , если размеры записей данных в столбцах существенно отличаются и длина строки может превышать 4000 пар байтов. Use nvarchar(max) when the sizes of the column data entries vary considerably, and the string length might exceed 4,000 byte-pairs.

Тип sysname — это предоставляемый системой определяемый пользователем тип данных, который функционально эквивалентен типу nvarchar(128) за исключением того, что он не допускает значения NULL. sysname is a system-supplied user-defined data type that is functionally equivalent to nvarchar(128), except that it is not nullable. Тип sysname используется для ссылки на имена объектов баз данных. sysname is used to reference database object names.

Объектам, в которых используются типы данных nchar и nvarchar, назначаются параметры сортировки базы данных по умолчанию, если только иные параметры сортировки не назначены с помощью предложения COLLATE. Objects that use nchar or nvarchar are assigned the default collation of the database unless a specific collation is assigned using the COLLATE clause.

Для типов данных nchar и nvarchar параметр SET ANSI_PADDING всегда принимает значение ON. SET ANSI_PADDING is always ON for nchar and nvarchar. Параметр SET ANSI_PADDING OFF не применяется к типам данных nchar или nvarchar. SET ANSI_PADDING OFF does not apply to the nchar or nvarchar data types.

Префикс N в строковых константах с символами Юникода указывает на входные данные в кодировке UCS-2 или UTF-16 (в зависимости от того, используются ли параметры сортировки с поддержкой дополнительных символов). Prefix a Unicode character string constants with the letter N to signal UCS-2 or UTF-16 input, depending on whether an SC collation is used or not. Без префикса N строка преобразуется в стандартную кодовую страницу базы данных, и определенные символы могут не распознаваться. Without the N prefix, the string is converted to the default code page of the database that may not recognize certain characters. Начиная с SQL Server 2019 (15.x) SQL Server 2019 (15.x) при использовании параметров сортировки с поддержкой UTF-8 стандартная кодовая страница может хранить символы Юникода в кодировке UTF-8. Starting with SQL Server 2019 (15.x) SQL Server 2019 (15.x) , when a UTF-8 enabled collation is used, the default code page is capable of storing UNICODE UTF-8 character set.

Когда строковая константа имеет префикс N и ее длина не превышает максимальную длину строкового типа данных nvarchar (4000), результатом неявного преобразования будет строка в кодировке UCS-2 или UTF-16. When prefixing a string constant with the letter N, the implicit conversion will result in a UCS-2 or UTF-16 string if the constant to convert does not exceed the max length for the nvarchar string data type (4,000). В противном случае результатом неявного преобразования будет большое значение nvarchar(max). Otherwise, the implicit conversion will result in a large-value nvarchar(max).

Читайте также:  Gigabyte ab350 gaming 3 биос

Каждому ненулевому столбцу varchar(max) и nvarchar(max) необходимо дополнительно выделить 24 байта памяти, которые учитываются в максимальном размере строки в 8060 байт во время операции сортировки. Each non-null varchar(max) or nvarchar(max) column requires 24 bytes of additional fixed allocation, which counts against the 8,060-byte row limit during a sort operation. Эти дополнительные байты могут неявно ограничивать число ненулевых столбцов varchar(max) или nvarchar(max) в таблице. These additional bytes can create an implicit limit to the number of non-null varchar(max) or nvarchar(max) columns in a table. При создании таблицы или во время вставки данных не возникает особых ошибок (кроме обычного предупреждения о том, что максимальный размер строки превышает максимально допустимое значение в 8060 байт). No special error is provided when the table is created (beyond the usual warning that the maximum row size exceeds the allowed maximum of 8,060 bytes) or at the time of data insertion. Такой большой размер строки может приводить к ошибкам (например, ошибке 512), которые пользователи не ожидают во время обычных операций. This large row size can cause errors (such as error 512) that users may not anticipate during some normal operations. Примерами операций могут служить обновление ключа кластеризованного индекса или сортировка полного набора столбцов. Two examples of operations are a clustered index key update, or sorts of the full column set.

Преобразование в символьные данные Converting Character Data

Сведения о преобразовании символьных данных см. в статье char и varchar (Transact-SQL). For information about converting character data, see char and varchar (Transact-SQL).

Varchar vs Nvarchar

Varchar — короткое имя для Variable Character Field. Символы представляют данные с неопределенной длиной. Varchar в действительности представляет собой тип столбца данных, который находится в системах управления базами данных. Размер поля столбцов Varchar может варьироваться в зависимости от рассматриваемой базы данных.

В Oracle 9i поле имеет максимальный предел 4000 символов. MySQL имеет предел данных 65535 для строки, а сервер Microsoft SQL Server 2005 имеет ограничение поля 8000. Эта цифра может увеличиться на сервере Microsoft SQL при использовании Varchar (max), увеличиваясь до 2 гигабайт. С другой стороны, Nvarchar — это столбец, который может хранить любую длину данных Unicode. Кодовая страница, которой должен придерживаться Nvarchar, — это 8-битное кодирование. Максимальный размер для Varchar составляет 8000, а максимальный размер для NVarchar — 4000. Это фактически означает, что один столбец Varchar может содержать максимум 8000 символов, а один столбец Nvarchar может составлять не более 4000 символов. Превышение значений столбцов становится огромной проблемой и может даже вызвать серьезные проблемы, поскольку строки не могут охватывать несколько страниц, за исключением SQL Server 2005, и ограничение должно быть соблюдено, или будут возникать ошибки или усечение.

Одним из главных отличий между Varchar и Nvarchar является использование меньшего пространства в Varchar. Это связано с тем, что Nvarchar использует Unicode, который, из-за хлопот кодирования специфики, занимает больше места. Для каждого сохраненного символа Unicode требует двух байтов данных, и именно это может привести к тому, что значение данных будет выглядеть выше по сравнению с данными, отличными от Unicode, которые использует Varchar. Varchar, с другой стороны, требует только одного байта данных для каждого сохраненного символа. Однако, что более важно, хотя использование Unicode занимает больше места, оно решает проблемы, возникающие из-за несовместимости кодовых страниц, которые могут быть решены вручную.

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

На всех платформах разработки используются современные операционные системы, что позволяет запускать Unicode. Это означает, что Nvarchar используется чаще, чем Varchar. Кодирование конверсий исключается, сокращая время, необходимое для чтения и записи в базу данных. Это также значительно уменьшает количество ошибок, и восстановление ошибок преобразования, которые происходят, становится простой проблемой для решения.

Читайте также:  Excel vba группировка строк

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

Varchar и Nvarchar имеют разные типы символов. Varchar использует данные, отличные от Unicode, в то время как Nvarchar использует данные Unicode.

Оба Varchar и Nvarchar имеют разные типы данных, которые должны соблюдаться. Varchar сохраняет данные только в 1 байтовой последовательности, а Nvarchar сохраняет данные в 2 байта для каждого символа

Максимальная длина также изменяется. Длина Varchar ограничена 8000 байтами, а 4000 байтов — предел для Nvarchar.

Это связано с тем, что размер хранилища в Varchar более прост в сравнении с данными Unicode, используемыми Nvarchar.

ПРИМЕНЯЕТСЯ К: SQL Server (начиная с 2008) База данных SQL Azure Хранилище данных SQL Azure Parallel Data Warehouse

Символьные типы данных, которые являются либо фиксированной длины, nchar, или переменную длину, nvarchar, набор символов в Юникоде и использование UNICODE UCS-2.

nchar ([n])
Строковые данные постоянной длины в Юникоде. n определяет длину строки и должен иметь значение от 1 до 4000. Размер хранения — два раза n байт. Если кодовая страница параметров сортировки использует двухбайтовые символы, размер хранилища по-прежнему n байт. В зависимости от строки, размер хранилища n байтов может быть меньше, чем значение, указанное для n. Синонимами по стандарту ISO для nchar , national char и символов национального алфавита.

nvarchar [(n | max ) ]
Строковые данные переменной длины в Юникоде. n определяет длину строки и может принимать значение от 1 до 4000. Max указывает, что максимальный размер хранилища равен 2 ^ 31-1 байт (2 ГБ). Размер хранилища в байтах вдвое больше числа введенных символов + 2 байта. Синонимами по стандарту ISO для nvarchar , national char переменной и различных символов национального алфавита.

Когда 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. Без префикса N строка преобразуется в кодовую страницу по умолчанию базы данных. Кодовая страница по умолчанию может не распознавать определенные символы.

Примечание

После добавления префикса строковой константы с букв N, если константа для преобразования не превышает Максимальная длина для типа данных строки Юникода (4000) неявное преобразование приведет к строки в Юникоде. В противном случае — неявное преобразование приведет к Юникода большого размера (max).

Каждый непустой varchar(max) или nvarchar(max) столбца требуется 24 байта дополнительных основных выделения которого вычитается ограничение в 8 060 байт строк во время операции сортировки. Это может создать неявных ограничений на число непустых varchar(max) или nvarchar(max) столбцы, которые могут быть созданы в таблице. При создании таблицы или во время вставки данных не возникает особых ошибок (кроме обычного предупреждения о том, что максимальный размер строки превышает максимально допустимое значение в 8060 байт). Этот крупный размер строки может вызывать ошибки (например, ошибку 512) во время некоторых обычных операций, таких как обновление ключа кластеризованного индекса, или сортировать полный набор столбцов, который пользователи не могут использовать до выполнения операции.

Сведения о преобразовании символьных данных см. в разделе char и varchar (Transact-SQL).

Предупреждение

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *