J'essaie de sélectionner toutes les lignes contenant uniquement des caractères alphanumériques dans MySQL en utilisant:
SELECT * FROM table WHERE column REGEXP '[A-Za-z0-9]';
Cependant, toutes les lignes sont renvoyées, même si elles contiennent des caractères non alphanumériques.
Essayez ce code:
SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$'
Cela garantit que tous les caractères correspondent.
Votre déclaration correspond à n'importe quelle chaîne contenant une lettre ou un chiffre n'importe où, même si elle contient d'autres caractères non alphanumériques. Essaye ça:
SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$';
^
et $
exigent que la chaîne entière corresponde à une partie plutôt qu'à une partie de celle-ci, et +
recherche 1 ou plus caractères alphanumériques.
Vous pouvez également utiliser une classe de caractères nommés si vous préférez:
SELECT * FROM table WHERE column REGEXP '^[[:alnum:]]+$';
Essaye ça:
REGEXP '^[a-z0-9]+$'
Comme regexp n'est pas sensible à la casse sauf pour les champs binaires.
Il y a aussi ceci:
select m from table where not regexp_like(m, '^[0-9]\d+$')
qui sélectionne les lignes contenant des caractères dans la colonne souhaitée (ce qui est m dans l'exemple mais que vous pouvez modifier).
La plupart des combinaisons ne fonctionnent pas correctement sur les plates-formes Oracle, mais cela fonctionne. Partage pour référence future.