En Oracle, hasta donde yo sé y por lo que he investigado por ahí, no hay una función que nos sirva expresamente para esto, sin embargo sí que podemos hacer algún ‘apaño’. En Internete podemos encontrar varios, pero de todos ellos, el que más me convence por sencillo y efectivo es el sgte:
TRANSLATE(nombre_campo,'T 0123456789','T') is null
Con esta sencilla condición podemos ver si el
campo es numérico. La función translate que vemos aquí simplemente comprueba
cómo quedaría el campo si le quitásemos todos los dígitos y los espacios que
pudiese haber. Si el resultado es igual a null (o sea, que no quedaría nada)
entonces es que es un número. La ‘T’ simplemente se usa como carácter auxiliar
para que funcione la cosa.
Para los más rigurosos podemos usar esta otra
versión extendida en la que además de los dígitos y los espacios en blanco,
quitamos cualquier otro carácter susceptible de aparecer en una expresión
numérica, tales como signos, puntos, paréntesis, operadores, etc…
TRANSLATE(nombre_campo,'T_0123456789 +-.,;:*!¡=/\()%^[]','T') is null
Como siempre lo más efectivo será pensar un
poco y adaptarlo al caso concreto que estemos viendo.
Fuente aquí
No hay comentarios:
Publicar un comentario