Consulta ORACLE

Hola, a ver quien puede echarme una mano con una consulta que se me resiste.

Tengo que sacar un listado que me diga todos los caracteres especiales que hay en un campo de una tabla.
Y entendemos por caracteres especiales todo lo que no sea numeros o letras;
Deberán salir cualquier otra cosa como # , / ( ) % & ... etc.

He probado con ascii(nombre_campo) pero solo me devuelve la primera posicion...
where ascii(nombre_campo) not between 65 and 90 -- entre A y Z
or ascii(nombre_campo) not between 97 and 122 -- entre a y z
or ascii(nombre_campo) not between 48 and 57 -- entre 0 y 9

Ando un poco liado.
phe escribió:Hola, a ver quien puede echarme una mano con una consulta que se me resiste.

Tengo que sacar un listado que me diga todos los caracteres especiales que hay en un campo de una tabla.
Y entendemos por caracteres especiales todo lo que no sea numeros o letras;
Deberán salir cualquier otra cosa como # , / ( ) % & ... etc.

He probado con ascii(nombre_campo) pero solo me devuelve la primera posicion...
where ascii(nombre_campo) not between 65 and 90 -- entre A y Z
or ascii(nombre_campo) not between 97 and 122 -- entre a y z
or ascii(nombre_campo) not between 48 and 57 -- entre 0 y 9

Ando un poco liado.


Así a primeras se me ocurre que podrías mirar el tema de las expresiones regulares. No se la sintaxis ni las rutinas disponibles para Oracle, pero seguro que lo encuentras facilmente en Google.
phe escribió:Hola, a ver quien puede echarme una mano con una consulta que se me resiste.

Tengo que sacar un listado que me diga todos los caracteres especiales que hay en un campo de una tabla.
Y entendemos por caracteres especiales todo lo que no sea numeros o letras;
Deberán salir cualquier otra cosa como # , / ( ) % & ... etc.

He probado con ascii(nombre_campo) pero solo me devuelve la primera posicion...
where ascii(nombre_campo) not between 65 and 90 -- entre A y Z
or ascii(nombre_campo) not between 97 and 122 -- entre a y z
or ascii(nombre_campo) not between 48 and 57 -- entre 0 y 9

Ando un poco liado.

Tal y como lo tienes puesto podríar cambiar los OR por AND y probar.
O un cursor que te vaya dando cada palabra, y hacer la búsqueda sobre esa. Eso si, no me pidas que te lo haga que los cursores no son mi fuerte del SQL, precisamente XD
3 respuestas