SQLite
 sql >> Base de données >  >> RDS >> SQLite

Renvoyer les lignes contenant uniquement des caractères non alphanumériques dans SQLite

Voici un exemple de retour de lignes contenant uniquement des caractères non alphanumériques dans SQLite.

Les caractères non alphanumériques incluent les caractères de ponctuation tels que [email protected]#&()–[{}]:;',?/* et des symboles comme `~$^+=<>“ , ainsi que des caractères d'espacement tels que les espaces ou les tabulations.

Exemple de données

Nous utiliserons les données suivantes pour nos exemples :

SELECT c1 FROM t1;

Résultat :

+----------------------+
| c1                   |
+----------------------+
| Music                |
| Live Music           |
| Café                 |
| Café Del Mar         |
| 100 Cafés            |
| [email protected]    |
| 1 + 1                |
| ()                   |
| [email protected]#&()–[{}]:;',?/*   |
| `~$^+=<>“            |
| $1.50                |
| Player 456           |
| 007                  |
| NULL                 |
|                      |
| é                    |
| É                    |
| é 123                |
| ø                    |
| ø 123                |
+----------------------+

Nous pouvons utiliser le REGEXP opérateur avec une expression régulière pour renvoyer les lignes qui ne contiennent que des caractères non alphanumériques :

SELECT c1 FROM t1
WHERE c1 NOT REGEXP '[A-Za-z0-9]';

Résultat :

+----------------------+
| c1                   |
+----------------------+
| ()                   |
| [email protected]#&()–[{}]:;',?/*   |
| `~$^+=<>“            |
|                      |
| é                    |
| É                    |
| ø                    |
+----------------------+

Dans ce cas, ma plage d'exclusion ne couvrait pas les caractères alphanumériques comme é , É , et ø . L'exemple suivant développe la plage pour exclure ces caractères du résultat :

SELECT c1 FROM t1
WHERE c1 NOT REGEXP '[A-Za-zÀ-Þß-ÿ0-9]';

Résultat :

()                
[email protected]#&()–[{}]:;',?/*
`~$^+=<>“         
                  

Notre table contient également une ligne avec la chaîne vide. Il s'agit d'un caractère non alphanumérique, et il est donc renvoyé dans le résultat ci-dessus. Nous pouvons également utiliser le NULLIF() fonction pour exclure la chaîne vide de la sortie :

SELECT c1 FROM t1
WHERE NULLIF(c1, '') NOT REGEXP '[A-Za-zÀ-Þß-ÿ0-9]';

Résultat :

()                
[email protected]#&()–[{}]:;',?/*
`~$^+=<>“