В книге, которую я читаю, говорится это
Поддержка SQL Server два вида символьных типов данных — постоянный клиент и Unicode. Регулярные типы данных включают CHAR и VARCHAR, и типы данных Unicode включают NCHAR и NVARCHAR. Различие - то, что регулярные символы используют один байт устройства хранения данных для каждого символа, в то время как символы Unicode требуют двух байтов за символ. С одним байтом устройства хранения данных на символ выбор регулярного типа символов для столбца ограничивает Вас только одним языком в дополнение к английскому языку, потому что только 256 (2^8) различные символы могут быть представлены единственным байтом.
То, что я узнал этим, если я использую Varchar затем, я могу использовать только один язык (Для напр. Хинди, индийский Язык) наряду с английским языком.
Но Когда я выполняю это
Create Table NameTable
(
NameColumn varchar(MAX) COLLATE Indic_General_90_CI_AS_KS
)
Это показывает мне, ошибка "Сопоставление 'Indic_General_90_CI_AS_KS' поддерживается на типах данных Unicode только и не может быть применена для обугливания, varchar или типы данных text".
Таким образом, где я неправильно понял автора?
Спасибо
Вы можете найти список коллизий здесь, вместе с типом кодировки
Некоторые коллизии применяются только к 1-байтовым кодировкам - 127 бит используются для обычного ASCII и 128 доступны для других символов - хинди, вероятно, не помещается в 128 символов, поэтому 1-байтовая коллизия к нему не применима.
Вам придется использовать nvarchar (или другой тип символов с префиксом 'n').
-- редактировать --
French_CI_AS как неанглийский пример
Одна из вещей, которые позволяют использовать коллизии - это упорядочивание символов в зависимости от языка и локали. Поэтому French != latin.
Другой пример Arabic_CI_AS
Это 1-байтовая кодировка с арабским алфавитом.