Como obter uma versão que diferencia maiúsculas de minúsculas de um agrupamento no SQL Server?
Existe uma maneira de obter uma versão com diferenciação de maiúsculas e minúsculas para usar em uma consulta?
Digamos que a consulta possa ser usada em bancos de dados com diferentes agrupamentos, alguns que não diferenciam maiúsculas de minúsculas e podem ter culturas diferentes. (vários clientes, por exemplo)
No entanto, essa consulta deve sempre se comportar com distinção entre maiúsculas e minúsculas e, se possível, não alterar a cultura de intercalação e outras propriedades.
Por exemplo, se um banco de dados estiver usando SQL_Latin1_General_CP1_CI_AS (IC aqui significa Case Insensitive), eu gostaria de usar SQL_Latin1_General_CP1_CS_AS (CS for Case Sensitive).
Exemplo de consulta simplista:
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'
A correção de um agrupamento como esse na consulta pode causar problemas ao migrar o código ou alterar o agrupamento do banco de dados em uma data posterior.
Existe uma função interna para obter a versão com diferenciação de maiúsculas e minúsculas do agrupamento atual ou uma solução alternativa que possa ser usada para isso?