Comment vérifier les majuscules dans MySQL?
Je veux vérifier si une chaîne de caractères consite uniquement de lettres majuscules. Je sais que RLIKE/REGEXP ne sont pas sensibles à la casse dans MySQL. J'ai donc essayé d'utiliser le :upper:
classe de personnage:
SELECT 'z' REGEXP '^[[:upper:]]+$';
C'est le vrai, bien que le z est en minuscule,... pourquoi?
Vous devez vous connecter pour publier un commentaire.
Donc, avec cela à l'esprit, il suffit de faire quelque chose comme ceci:
À l'aide de l'exemple ci-dessus, vous obtenez une liste d'e-mails qui contiennent une ou plusieurs lettres majuscules.
Pour moi cela fonctionne et n'est pas à l'aide d'une expression régulière. Essentiellement, il compare le terrain avec lui-même en majuscule par mysql lui-même.
UPPER
dans la réponse à laLOWER
.changement de classement sensible à la casse, par exemple.
alors essayez cette requête,
:upper:
quandA-Z
fait la même chose, et:upper:
est le même que:lower:
lorsque le classement est*_ci
? J'ai pensé*_ci
donne par défaut, mais lors de l'utilisation de:upper:
il recherche des majuscules. Dans la description de [:character_class:] dans dev.mysql.com/doc/refman/5.0/en/regexp.html Il dit que je devrais regarder les pages de manuel dectype(3)
. J'ai essayéhelp ctype
,man ctype
,... rien n'a fonctionnéSELECT 'z' RLIKE '^[A-Z]$' COLLATE 'utf8_general_cs';
, qui m'a donné une erreur:ERROR 1273 (HY000): Unknown collation: 'utf8_general_cs'
. La commandeSELECT 'z' RLIKE '^[A-Z]$' COLLATE 'utf8_general_ci';
fonctionne très bien. Alors, comment puis-je installer le classement sensible à la casse?SELECT CONVERT(_utf8'z' USING 'latin1') RLIKE CONVERT(_utf8'[[:upper:]]' USING 'latin1') COLLATE 'latin1_general_cs';
Est-ce vraiment la seule façon d'introduire de la casse à MySQL?SELECT * FROM table where column = upper(column);
Cela a fonctionné pour moi d'obtenir la liste des lignes ayant seulement les caractères en majuscules: