2010-06-30 5 views
6

sensibles Considérons une table datatbl comme ceci:cas RLIKE

+----------+ 
| strfield | 
+----------+ 
| abcde | 
| fgHIJ | 
| KLmno | 
+----------+ 

Je veux écrire un quelque chose comme la requête suivante:

select * from datatbl where strfield rlike '[a-z]*'; 

Comme dans une regex non-SQL, je voudrais retourne la ligne w/abcde, mais pas les lignes w/majuscules. Je n'arrive pas à trouver un moyen facile de le faire. Est-ce que je manque quelque chose de stupide?

Merci, Joe

Répondre

12

MySQL REGEXP/RLIKE suce pour cela - vous devez jeter les données BINARY pour cas de recherche sensible:

SELECT * 
    FROM datatbl 
WHERE CAST(strfield AS BINARY) rlike '[a-z]*'; 

Vous trouverez cette soulevée dans le comments for the REGEXP/RLIKE documentation .

+0

Juste pour référence future, pour correspondre à la chaîne entière comme OP semblait vouloir, l'expression rationnelle devrait être - 'rlike '^ [a-z] * $' ' – Kip