8
votes

Je voudrais une requête mysql. Tous les champs contenant une lettre majuscule

J'ai un peu de problèmes avec cette requête et Google n'est pas mon ami aujourd'hui

​​I Tous les résultats d'une table contenant une ou plusieurs lettres majuscules. Quelque chose comme ceci: xxx

Quelqu'un sait une solution facile pour cela?

Merci!


0 commentaires

5 Réponses :


3
votes

Je pense que la fonction de chaîne RLIM peut aider. Nous pouvons utiliser REGEXP [A-Z] pour tester la chaîne pour les lettres majuscules.


0 commentaires

9
votes

Essayez

        SELECT * 
        FROM personal_urls 
        WHERE CAST(vanity_url  AS BINARY) RLIKE '[A-Z]';


2 commentaires

Qui retourne tout ce qui contient [A-ZA-Z]. Pour une raison quelconque, le regexp n'est pas sensible à la casse par défaut. Avec Regexp binaire, cela fonctionne. Merci quand même!


Le regexp n'est pas sensible à la casse car vous utilisez une assiette insensible à la casse



1
votes

Vous pouvez essayer d'essayer xxx


3 commentaires

J'ai testé cela et cela donne uniquement des résultats pour des champs complètement hauts sur la hausse. Mais j'avais besoin qui contient un ou plusieurs ci-dessus.


@Michael: Droite. J'ai mis à jour votre question pour (une ou plusieurs) lettres majuscules.


@MIACHEL: Rignes binaires donnera des résultats similaires à Regexp binaires



2
votes

J'ai trouvé la réponse moi-même. XXX


0 commentaires

1
votes

Je sais que c'est vieux, mais je l'ai couru aujourd'hui, je vais donc laisser cela ici pour que quiconque vient de google.

Vous pouvez simplement comparer chaque enregistrement à la version minuscule de lui-même. La seule subtilité est que la comparaison de chaînes ordinaire n'est pas sensible à la casse si vous utilisez une collision insensible à une casse (que vous êtes probablement si vous posez cette question). Comparaison des valeurs en tant que binaire avec le mot-clé code> code> p>

SELECT * FROM personal_urls WHERE vanity_urls != BINARY LOWER(vanity_urls)


0 commentaires