Простой литерал в SQL-сервере - по умолчанию тип CHAR / VARCHAR
.Этот тип 1-байтовый расширенный ASCII : нижняя половина - набор символов обычный латинский , верхняя половина зависит от параметров сортировки.Это означает, что поддержка нестандартных символов очень мала.
Второй тип символов - NCHAR / NVARCHAR
.Это (почти) юникод, очень близкий к utf-16
.Фактическое кодирование двухбайтовое кодирование UCS-2
.Поддержка нестандартных символов (почти) завершена.Любой литерал, начинающийся с N
, обрабатывается как NCHAR / NVARCHAR
:
Попробуйте:
SELECT '╬',N'╬';
DECLARE @str1a VARCHAR(10)='╬';
DECLARE @str1b VARCHAR(10)=N'╬'; --The NVARCHAR literal is changed to VARCHAR
DECLARE @str2 NVARCHAR(10)=N'╬';
SELECT @str1a,@str1b,@str2;
Функции для получения кода и наоборот- чтобы получить персонажа тоже два сложения:
SELECT ASCII('a'), UNICODE(N'a')
,ASCII('╬'), UNICODE(N'╬')
,CHAR(97),NCHAR(97),CHAR(43),NCHAR(43)
,NCHAR(9580)--does not work with `CHAR`