Как получить чувствительную к регистру версию сопоставления в SQL Server?

Есть ли способ получить чувствительную к регистру версию сопоставления для использования в запросе?

Предположим, что запрос может использоваться в базах данных с разными параметрами сортировки, некоторые из которых нечувствительны к регистру и могут иметь разные культуры. (например, несколько клиентов)

Однако этот запрос должен всегда вести себя с учетом регистра, при этом, по возможности, не изменяя культуру сопоставления и другие свойства.

Например, если БД использует SQL_Latin1_General_CP1_CI_AS (CI здесь означает «без учета регистра»), я хотел бы использовать SQL_Latin1_General_CP1_CS_AS («CS» с учетом регистра).

Упрощенный пример запроса:

DECLARE @Title nvarchar(2) = 'qQ'

--Case insensitive (following DB collation)
SELECT REPLACE(@Title, 'q', 'o') --Result: 'oo'

--Case sensitive, but fixed to a collation
SELECT REPLACE(@Title COLLATE SQL_Latin1_General_CP1_CS_AS, 'q', 'o') --Result: 'oQ'

Подобное сопоставление в запросе может привести к проблемам при переносе кода или изменении параметров сортировки БД на более позднюю дату.

Есть ли встроенная функция для получения чувствительной к регистру версии текущей сортировки или обходной путь, который можно использовать для этого?

Ответы на вопрос(1)

Ваш ответ на вопрос