Приведенная сортировка переменных nvarchar в t-sql

Мне нужно изменить параметры сортировки переменной nvarchar. документация:

(...) 3. Предложение COLLATE можно указать на нескольких уровнях. К ним относятся: следующий:

кастинг сортировки выражение. Вы можете использовать COLLATE предложение для применения символьного выражения к определенной сортировке. Характер литералы и переменные назначаются параметры сортировки по умолчанию для текущего база данных. Колонна ссылки присвоено определение параметров сортировки столбец. Для сортировки выражение, смотри Очередность Параметров Сортировки (Transact-SQL).

однако я не могу понять правильный синтаксис для использования объявления CAST(), CONVERT() или переменной с объявлением для этой цели.

4 ответов


SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS

CAST или CONVERT - это лишнее!

SELECT N'abc' COLLATE French_CS_AS

это лишнее, потому что просто изменение параметров сортировки не изменяет тип данных NVARCHAR.


Если вы меняете между 2 и 1 байтом или vice-ver-sa, кодировки символов, то CAST или Convert необходимо. В этих случаях это не лишнее.

когда исходный столбец представляет собой последовательность символов 2 байта (nchar, nvarchar), а проекция выбора должна быть однобайтовым символом (char, varchar), вы должны указать приведение и преобразование. Примените преобразование параметров сортировки перед литьем между системами типов.

SELECT CAST(N'ФBC' COLLATE SQL_Latin1_General_CP1_CI_AS as varchar(10)) AS ProjectedSingleByte

Если вы хотите сравнить или объединить два столбца разных параметров сортировки, это может помочь. В моем случае мне пришлось сравнить два столбца с одним, используя "SQL_Latin1_General_CP1_CI_AS", а другой - "Latin1_General_CP1_CI_AS".

Я просто использовал эту опцию, где я присоединяюсь к этим двум.

на A. Person = B. имя сопоставить database_default