Getting your Trinity Audio player ready...
|
Apenas para deixar claro: Não sou contra a utilização de CS e AS.
O desenvolvedor tem que lembrar que quando a base está com o collation em CS e ninguém alterou a coluna da pesquisa para CI ele vai ter resultados diferentes quando usa essa coluna em um distinct ou no where…
A algum tempo um desenvolvedor veio conversar comigo porque ele estava tendo problemas em um resultado de um select,,, coisa pouca, em uma tabela de uns 1kk de registros ele queria usar distinct para recuperar umas informações, quando ele usava o order by ele mostrava muitos resultados parecidos…
Lembrei ele que a base era CS e que ou teria que usar UPPER/LOWER ou passar um collation para a coluna da pesquisa ele ficou me olhando como se eu fosse louco…. ta certo,,, ele não estava errado,,, mas era uma solução rápida e indolor…
Exemplo:
CREATE DATABASE [BDTESTE] COLLATE Latin1_General_100_CS_AS GO USE BDTESTE GO create table tbl_teste( nome varchar(20) ) insert into tbl_teste select 'teste' union select 'Teste' union select 'tEstE union select 'TESTE' SELECT * from tbl_teste
select distinct(nome) from tbl_teste
select distinct(UPPER(nome)) from tbl_teste
select distinct(nome) COLLATE sql_latin1_general_cp1_ci_ai from tbl_teste
Existem outras formas de solucionar isso,,, trocar o collation da coluna direto na tabela, criar uma view, etc etc…