SQLite
 sql >> Database >  >> RDS >> SQLite

Restituisce righe che contengono solo caratteri non alfanumerici in SQLite

Ecco un esempio di restituzione di righe che contengono solo caratteri non alfanumerici in SQLite.

I caratteri non alfanumerici includono segni di punteggiatura come [email protected]#&()–[{}]:;',?/* e simboli come `~$^+=<>“ , oltre a spazi bianchi come spazi o caratteri di tabulazione.

Dati campione

Utilizzeremo i seguenti dati per i nostri esempi:

SELECT c1 FROM t1;

Risultato:

+----------------------+
| 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                |
+----------------------+

Possiamo usare il REGEXP operatore con un'espressione regolare per restituire le righe che contengono solo caratteri non alfanumerici:

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

Risultato:

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

In questo caso, il mio intervallo di esclusione non copriva i caratteri alfanumerici come é , É e ø . L'esempio seguente espande l'intervallo per escludere quei caratteri dal risultato:

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

Risultato:

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

La nostra tabella contiene anche una riga con la stringa vuota. Questo è un carattere non alfanumerico e quindi viene restituito nel risultato precedente. Possiamo anche usare il NULLIF() funzione per escludere la stringa vuota dall'output:

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

Risultato:

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