Default collation på SQL Server er case-insensitive. Det er som oftest også det smarteste, så man ikke behøver koncentrere sig om at skrive f.eks. object navne med den rigtige case. Ind imellem kunne det dog være rart, hvis man kunne lave en case-sensitive WHERE-clause, f.eks. i forbindelse med, at en bruger angiver password til login.
Eks:
SELECT * FROM tbl_User WHERE Password = 'superfly'
Denne returnerer både dem der har password: superfly, Superfly, SUPERFLY og lign., hvilket ikke er hensigtsmæssigt.
Følgende lille trick giver til gengæld det ønskede resultat:
SELECT * FROM tbl_User WHERE CONVERT(BINARY, Password) = CONVERT(BINARY, 'superfly')
Nu vil kun brugere med password superfly blive returneret. Den binære værdi for f.eks. s og S er forskellig, så nu risikerer vi ikke at få uønskede rækker returneret.
Den betænksomme SQL programmør vil nu gøre opmærksom på, at et evt. index på kolonnen Password ikke længere vil kunne anvendes, men at der vil skulle en table-scan til for at finde den ønskede brugere.
Dette kan man komme ud over med denne færdig SELECT:
SELECT * FORM tbl_User WHERE Password = 'superfly' AND CONVERT(BINARY, Password) = CONVERT(BINARY, 'superfly')
Et index kan nu anvendes til at finde de brugere, der har password superfly i en elle anden form, og til sidst fjernes de brugere, der så ikke har det på den rigtige form (den rigtige case).
Vores mål er nu nået og vi har lavet en case-sensitive WHERE-clause på en database med case-insensitive collation.