В чем разница между char, nchar, varchar и nvarchar в SQL Server?
Все ответы на данный момент sql-server указывают, что varchar
- однобайтный, nvarchar
- двухбайтовый. Первая varchar часть этого на самом деле sql-server depends on collation, как показано ниже.
DECLARE @T TABLE
(
C1 VARCHAR(20) COLLATE Chinese_Traditional_Stroke_Order_100_CS_AS_KS_WS,
C2 NVARCHAR(20)COLLATE Chinese_Traditional_Stroke_Order_100_CS_AS_KS_WS
)
INSERT INTO @T
VALUES (N'中华人民共和国',N'中华人民共和国'),
(N'abc',N'abc');
SELECT C1,
C2,
LEN(C1) AS [LEN(C1)],
DATALENGTH(C1) AS [DATALENGTH(C1)],
LEN(C2) AS [LEN(C2)],
DATALENGTH(C2) AS [DATALENGTH(C2)]
FROM @T
Возврат
Обратите sql-server внимание, что символы 华
и ms-sql-server 国
все еще не были представлены mssql в версии VARCHAR
и были незаметно sql-server заменены на ?
.
На самом деле ms-sql-server все еще нет китайских иероглифов, которые sql-srever можно было бы представить sql-server одним байтом в этом сопоставлении. Единственные varchar однобайтовые символы - это mssql типичный западный набор ASCII.
Из-за varchar этого возможна вставка из mssql столбца nvarchar(X)
в столбец varchar(X)
to fail with a truncation error (где ms-sql-server X обозначает число, одинаковое sql-server в обоих случаях).
SQL Server varchar 2012 добавляет параметры sql-server сортировки SC (дополнительный sql-srever символ), которые поддерживают mssql UTF-16
. В этих сопоставлениях один varchar символ nvarchar
может занимать 2 mssql или 4 байта.
sql-server
varchar
В чем разница между char, nchar, varchar и nvarchar в SQL Server?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.