Разница между CHAR и NCHAR в базе данных с сопоставлением UTF-8 - PullRequest
0 голосов
/ 02 июля 2019

В SAP SQL Anywhere (где типы данных и большинство структур очень похожи на SQL Server) для параметров сортировки базы данных по умолчанию установлено значение UTF-8 - подробные настройки приведены ниже:

enter image description here

У меня есть набор специальных символов, с которыми база данных должна храниться и работать (диапазон : U + 1400 - U + 167F ) и после тестовой вставки типы данных VARCHAR и NVARCHAR были в состоянии приспособиться к этим специальным символам без видимой разницы (кроме выделенного пространства) - см. ниже:

enter image description here

Правильно ли я понимаю, когда для параметров сортировки БД установлено значение UTF-8 (с кодировкой UTF8BIN), тип данных CHAR/VARCHAR по умолчанию способен хранить кодировку UTF-8 и NCHAR/NVARCHAR UTF-16? То есть мне не нужно преобразовывать все CHAR/VARCHAR объекты в NCHAR/NVARCHAR, если все, что мне нужно, это диапазон UTF-8: U + 1400 - U + 167F?

1 Ответ

0 голосов
/ 03 июля 2019

Чтобы ответить на мой собственный вопрос:

Да, CHAR и VARCHAR в UTF-8 Collation будут хранить все символы, но спецификация длины типа данных будет отличаться.При определении длины varchar, например: VARCHAR (100), мы ожидаем ограничение в 100 символов.Это будет работать только для символов, где 1char = 1 байт (ASCII), для всех символов UTF-8 (2-4 байта) число будет указывать длину в байтах, например: VARCHAR (100) сможет содержать только строку UTF-8длина которого составляет 4 символа для 4-байтового текста UTF-8.

Пожалуйста, не стесняйтесь исправлять меня или улучшать мой ответ.

...