Параметры Сортировки Sql Server
книга, которую я читаю, говорит, что
SQL Server поддерживает два типа символьных типов данных-regular и Unicode. Обычные типы данных включают CHAR и VARCHAR, а типы данных Unicode - NCHAR и NVARCHAR. Разница в том, что обычные символы используют один байт памяти для каждого символа, в то время как символы Юникода требуют два байта на символ. С одним байтом хранения на символ выбор обычного типа символов для столбца ограничивает вас только один язык в дополнение к английскому, потому что только 256 (2^8) разных символов могут быть представлены одним байтом.
Я узнал, что если я использую Varchar, то я могу использовать только один язык(например. Хинди, индийский язык) наряду с английским.
Но когда я запускаю это
Create Table NameTable
(
NameColumn varchar(MAX) COLLATE Indic_General_90_CI_AS_KS
)
он показывает мне ошибку "параметры сортировки" Indic_General_90_CI_AS_KS " поддерживается только для типов данных Unicode и не может быть применен к типам данных char, varchar или text."
Так где я неправильно понял автора?
Спасибо
3 ответов
вы можете найти список сортировки здесь, вместе с типом кодировки
некоторые параметры сортировки будут применяться только к 1-байтовым кодировкам - 127 бит используются для обычного ASCII и 128 доступны для других символов-хинди, вероятно, не вписывается в 128 символов, поэтому 1-байтовые параметры сортировки не применяются к нему.
вам придется использовать nvarchar (или другой тип символа с префиксом "n").
-- edit --
French_CI_AS в качестве неанглийского примера
одна из вещей, которые позволяют параметры сортировки, - это языковой и языковой порядок символов. Поэтому Французы != латинский.
еще один пример Arabic_CI_AS
Это 1-байтовая кодировка с арабским алфавитом.
используйте это в своем SQL-операторе, учитывая, что" content " - это переменная, содержащая арабскую строку, которую вы хотите вставить:
update Table set contents = convert(text, N'" + content + "' collate Arabic_CI_AS)
Он работает нормально.