2011-07-09 3 views
9

Je suis à la recherche d'une correspondance exacte d'une chaîne dans mysql. La chaîne est "Nrew". Mais quand je fais les requêtes ci-dessous, j'obtiens toujours un résultat:comment rechercher une chaîne exacte dans mysql

SELECT UserID FROM sys_users WHERE UserID='NREW' 
SELECT UserID FROM sys_users WHERE UserID='NrEw' 

Aidez svp.

Répondre

19
SELECT UserID FROM sys_users WHERE BINARY UserID='NREW' 
+0

Comme une note supplémentaire, si vous correspondent à des noms de comptes d'utilisateurs uniques, assurez-vous que vous utilisez BINARY aussi comme autrement, les noms aiment.smith et aime.smith sont supposés être la même valeur indépendamment de la différence de caractère spécial. –

8

Le classement par défaut qui utilise MySQL pour faire des comparaisons est insensible à la casse. Vous devez spécifier un classement ou un binaire sensible à la casse. Vous pouvez le faire lors de la création de la colonne ou dans la requête.

Par exemple:

SELECT UserID FROM sys_users WHERE UserID='NREW' COLLATE latin1_bin 

Le classement adéquat dépend de votre jeu de caractères. Pour latin1, la valeur par défaut, vous pouvez utiliser latin1_bin. Pour utf8, utf8_bin.

3

Une méthode consiste à utiliser LIKE BINARY au lieu de =:

SELECT UserID FROM sys_users WHERE UserID LIKE BINARY 'nrew'; 
5

Vous pouvez utiliser binaire mot-clé,

SELECT UserID FROM sys_users WHERE BINARY UserID='nrew' 

se réfèrent à here

Questions connexes