2010-01-10 6 views
1

double possible:How to apply wildcard in instr() in MySQL?Comment utiliser la sensibilité à la casse dans instr() dans MySQL?

Le duplicata possible lié montre une requête qui est exactement comme mon une sorte de courant. Cependant, je ne peux pas trouver un moyen de faire correspondre sensible match. : \

SELECT COUNT(*) FROM users WHERE INSTR(flags, 'T') > 0; 

Je reçois un compte de 46 ce qui est manifestement faux. Il compte chaque instance "T" dans les drapeaux, que ce soit en majuscules ou en minuscules.

Cela fonctionne comme indiqué dans la documentation de MySQL. J'ai trouvé quelque chose dans les docs MySQL qui disait de mettre un symbole "@" sur une variable pour en faire une correspondance sensible à la casse. Cependant, j'ai essayé ceci sur le 'T' pour former la requête suivante:

SELECT COUNT(*) FROM users WHERE INSTR(flags, @'T') > 0; 

J'obtiens un compte de zéro.

Quelqu'un pourrait-il nous éclairer à ce sujet? :)

EDIT:

oublié de mentionner, désolé. J'ai également essayé un LIKE '%T%' comme la clause where, qui a échoué et renvoie la même chose que (INSTR(flags, 'T') > 0);

+0

Peut-être que vous pourriez publier votre exemple de valeur 'flags', afin que nous puissions tester contre cela. – cmptrgeekken

+0

'flags' serait quelque chose comme" TkKp "où" T "est ce que je suis correspondant. L'exemple de chaîne où le "T" est en minuscules est: "AKkRBbagSsPpCtmxeGhUX" – Zack

+0

J'essaie d'obtenir un compte du nombre d'entrées dans ma table ont un champ particulier contiennent un "T". – Zack

Répondre

2

Testé,

SELECT binary 'AKkRBbagSsPpCtmxeGhUX' LIKE '%T%'; 

produit '0', comme prévu. Selon la documentation String Comparison, LIKE effectue une comparaison binaire (donc sensible à la casse) si l'un de ses opérandes est binaire.

2

Je crois que cela fonctionnera

SELECT COUNT(*) FROM users WHERE INSTR(binary flags, 'T') > 0; 
+0

Hmm. N'a pas fonctionné comme il a retourné un nombre de 5 qui est toujours incorrect :( – Zack

+1

Vous avez mentionné essayer 'LIKE', avez-vous essayé' drapeaux binaires LIKE '% T%' 'ou peut-être' drap binaire LIKE binaire '% T%' '. –

+0

+1 fonctionne bien ici sur la version 5.5 – virtualeyes

Questions connexes