sql >> Base de Datos >  >> RDS >> SQLite

Devolver filas que solo contienen caracteres no alfanuméricos en SQLite

Este es un ejemplo de devolución de filas que contienen solo caracteres no alfanuméricos en SQLite.

Los caracteres no alfanuméricos incluyen caracteres de puntuación como [email protected]#&()–[{}]:;',?/* y símbolos como `~$^+=<>“ , así como caracteres de espacio en blanco como el espacio o los tabuladores.

Datos de muestra

Usaremos los siguientes datos para nuestros ejemplos:

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 el REGEXP operador con una expresión regular para devolver las filas que contienen solo caracteres no alfanuméricos:

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

Resultado:

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

En este caso, mi rango de exclusión no cubría caracteres alfanuméricos como é , É , y ø . El siguiente ejemplo expande el rango para excluir esos caracteres del resultado:

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

Resultado:

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

Nuestra tabla también contiene una fila con la cadena vacía. Este es un carácter no alfanumérico, por lo que se devuelve en el resultado anterior. También podemos usar NULLIF() función para excluir la cadena vacía de la salida:

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

Resultado:

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