Ответ 1
SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS
Мне нужно изменить сортировку переменной nvarchar. По документации:
(...) 3. Можно указать предложение COLLATE на нескольких уровнях. К ним относятся следующее:
Листинг сортировки выражение. Вы можете использовать COLLATE для применения символьного выражения к определенной сортировке. символ литералы и переменные стандартная сортировка текущего база данных. Ссылки столбцов назначил определение колонка. Для сопоставления выражение, см. Приоритет сортировки(Transact-SQL).
Однако я не могу определить правильный синтаксис для использования CAST(), CONVERT() или объявления переменной с DECLARE для этой цели.
SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS
CAST
или CONVERT
является излишним!
SELECT N'abc' COLLATE French_CS_AS
Это лишнее, потому что просто изменение сортировки не изменяет тип данных NVARCHAR
.
Если вы изменяете между 2 и 1 байт или наоборот, кодировки символов, то требуется CAST или Convert. В этих случаях это не лишнее.
Когда исходный столбец представляет собой 2-байтовую последовательность символов (nchar, nvarchar), а проекция выбора должна быть одиночным байтовым символом (char, varchar), вы должны указать преобразование и преобразование. Примените преобразование сортировки перед литьем между системами типов.
SELECT CAST(N'ФBC' COLLATE SQL_Latin1_General_CP1_CI_AS as varchar(10)) AS ProjectedSingleByte