100 votes

Le serveur SQL ignore la casse dans une expression where

Comment construire une requête SQL (MS SQL Server) où la clause "where" est insensible à la casse ?

SELECT * FROM myTable WHERE myField = 'sOmeVal'

Je veux que les résultats reviennent en ignorant l'affaire.

4voto

Vous pouvez forcer la sensibilité à la casse, en coulant dans un varbinaire comme ça :

SELECT * FROM myTable 
WHERE convert(varbinary, myField) = convert(varbinary, 'sOmeVal')

3 votes

Bien que cela soit fonctionnel, ce n'est pas une approche conseillée. Les collations sont là pour gérer le tri et les comparaisons de chaînes de caractères.

0 votes

@AdamRobinson ne s'agit-il pas de "comparaisons de chaînes" ?

0 votes

@Fandango68 Oui, c'est le cas, et Adam dit que les collations sont meilleures pour les comparaisons de chaînes de caractères.

2voto

Chase Seibert Points 7609

Quelle base de données utilisez-vous ? Avec MS SQL Server, c'est un paramètre qui s'applique à l'ensemble de la base de données, ou vous pouvez le remplacer par une requête avec le mot clé COLLATE.

0 votes

Bonjour. Pour SQL Server, en ce qui concerne le sujet de cette question, il ne s'agit ni d'un paramètre à l'échelle de la base de données ni d'un paramètre par requête. Veuillez consulter ma réponse pour les détails.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X