Les requêtes SQL Server sensibilité à la casse
J'ai cette base de données:
abcDEF
ABCdef
abcdef
si j'écris: select * from MyTbl where A='ABCdef'
comment l'obtenir: ABCdef
et comment l'obtenir:
abcDEF
ABCdef
abcdef
Merci d'avance
oublié d'écrire - sqlCE
- Majuscules/Lowecase, pas grand/petit.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire votre requête sensible à la casse en faisant usage de la
ASSEMBLER
mot-clé.Si vous avez abcDEF, ABCdef, abcdef déjà dans la base de données puis il est déjà sensible à la casse ou vous n'avez aucune contrainte.
Vous devez ajouter un
COLLATE
sur les deux côtés afin de s'assurer qu'il est vraiment sensible à la casse (pour un non sensibles à la casse de la base de données) qui risque d'invalider l'utilisation des indexCe sujet accents de trop?
Latin1_General_CS_AI
,Latin1_General_Bin
?Il est tout au sujet de classement. Chacun a un suffixe (CI et CS, sens de la casse, et Sensibles à la casse).
http://www.databasejournal.com/features/mssql/article.php/10894_3302341_2/SQL-Server-and-Collation.htm
SQL est non sensible à la casse par défaut, vous obtiendrez tous les trois articles si faire une simple comparaison de chaînes de caractères. Pour le rendre sensible à la casse, vous pouvez lancer la valeur du champ et votre recherche de la valeur comme de type varbinary:
Ci-dessus suppose que votre champ de type varchar est de taille moyenne à 20. Pour nvarchar double (merci @ps2goat).
COLLATE
signifie que les indices ne sera pas utilisé de toute façon.Essayer ce juste ajouter un mot-clé binaire après
where
: