Vous trouverez ci-dessous deux méthodes pour renvoyer des lignes qui ne contiennent que des caractères alphanumériques dans PostgreSQL.
Les caractères alphanumériques sont des caractères alphabétiques et des caractères numériques.
Exemple de données
Nous utiliserons les données suivantes pour nos exemples :
SELECT c1 FROM t1;
Résultat :
Music Live Music Café Café Del Mar 100 Cafés [email protected] 1 + 1 () [email protected]#&()–[{}]:;',?/* `~$^+=<>“ $1.50 Player 456 007 null é É é 123 ø ø 123
Option 1 : Comparer avec [:alnum:]
Nous pouvons utiliser le ~
de PostgreSQL opérateur pour comparer la valeur à une expression régulière.
La capacité d'expression régulière de PostgreSQL inclut la prise en charge des classes de caractères POSIX. Par conséquent, nous pouvons utiliser le [:alnum:]
Classe de caractères POSIX dans nos expressions régulières pour trouver les lignes contenant des caractères alphanumériques.
SELECT c1 FROM t1
WHERE c1 ~ '^[[:alnum:]]+$';
Résultat :
Music Café 007 é É ø
Cela renvoie uniquement les valeurs composées uniquement de caractères alphanumériques. Si une ligne contient à la fois des caractères alphanumériques et non alphanumériques, elle n'est pas renvoyée.
Notez que le caractère espace est considéré comme non alphanumérique, et donc si nous voulons inclure des espaces, nous pouvons le faire :
SELECT c1 FROM t1
WHERE c1 ~ '^[[:alnum:] ]+$';
Résultat :
Music Live Music Café Café Del Mar 100 Cafés Player 456 007 é É é 123 ø ø 123
Pour renvoyer toutes les lignes qui contiennent caractères alphanumériques (même si la ligne contient également des caractères non alphanumériques), nous pouvons faire ceci :
SELECT c1 FROM t1
WHERE c1 ~ '[[:alnum:]]';
Résultat :
Music Live Music Café Café Del Mar 100 Cafés [email protected] 1 + 1 $1.50 Player 456 007 é É é 123 ø ø 123
Option 2 :Spécifiez une plage de caractères
Une autre façon de procéder consiste à spécifier une plage de caractères dans l'expression régulière.
Exemple :
SELECT c1 FROM t1
WHERE c1 ~ '^[A-Za-z0-9]+$';
Résultat :
Music 007
Vous remarquerez que cela a renvoyé moins de lignes qu'avec notre premier exemple. C'est parce que je n'ai pas inclus le é
, É
, ou ø
caractères dans ma plage, et donc toutes les lignes contenant ces caractères sont exclues de la sortie.
Par conséquent, il vaut la peine d'être particulièrement attentif lors de l'utilisation de cette méthode. Il serait facile d'exclure accidentellement des caractères que vous devriez inclure.
Cependant, en respectant cette plage, nous pouvons inclure des espaces comme celui-ci :
SELECT c1 FROM t1
WHERE c1 ~ '^[A-Za-z0-9 ]+$';
Résultat :
Music Live Music Player 456 007
Et nous pouvons utiliser ce qui suit pour inclure toutes les lignes qui contiennent caractères de notre gamme (même s'ils contiennent également des caractères hors de cette gamme) :
SELECT c1 FROM t1
WHERE c1 ~ '[A-Za-z0-9]';
Résultat :
Music Live Music Café Café Del Mar 100 Cafés [email protected] 1 + 1 $1.50 Player 456 007 é 123 ø 123