SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Retornar linhas que contêm apenas caracteres não alfanuméricos no SQLite


Aqui está um exemplo de retorno de linhas que contêm apenas caracteres não alfanuméricos no SQLite.

Caracteres não alfanuméricos incluem caracteres de pontuação como [email protected]#&()–[{}]:;',?/* e símbolos como `~$^+=<>“ , bem como caracteres de espaço em branco, como os caracteres de espaço ou tabulação.

Dados de amostra


Usaremos os seguintes dados para nossos exemplos:
SELECT c1 FROM t1;

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

Podemos usar o REGEXP operador com uma expressão regular para retornar as linhas que contêm apenas caracteres não alfanuméricos:
SELECT c1 FROM t1
WHERE c1 NOT REGEXP '[A-Za-z0-9]';

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

Nesse caso, meu intervalo de exclusão não abrangeu caracteres alfanuméricos como é , É , e ø . O exemplo a seguir expande o intervalo para excluir esses caracteres do resultado:
SELECT c1 FROM t1
WHERE c1 NOT REGEXP '[A-Za-zÀ-Þß-ÿ0-9]';

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

Nossa tabela também contém uma linha com a string vazia. Este é um caractere não alfanumérico e, portanto, é retornado no resultado acima. Também podemos usar o NULLIF() função para excluir a string vazia da saída:
SELECT c1 FROM t1
WHERE NULLIF(c1, '') NOT REGEXP '[A-Za-zÀ-Þß-ÿ0-9]';

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