Параметры Сортировки 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)

Он работает нормально.


вы можете использовать этот

name = N'مرحبا كيف حالك'