¿Como saber si una cadena tiene números o texto PL/SQL?



Muchas veces queremos saber si una variable contiene números o si contiene texto, sucede que a veces es necesario validar la cadena para que no ocurran errores, existen muchas maneras de hacerlo, pero utilizando las funciones de expresiones regulares se puede hacer de una manera fácil y rápida.
Ejemplo: Se requiere saber si la cadena contiene algún número.

select REGEXP_REPLACE('Juan Maria 25 años vive en la calle 13 de la avenida 14','[A-Za-z]*')
from dual;

Utilizando esta expresión regular replace se quitan todos los caracteres dejando únicamente los números
Output:
 

En esta salida vemos que un conserva los espacios, para solucionar esto ponemos un espacio en la expresión regular de búsqueda para que entienda que los espacios también deben ser remplazados.

select REGEXP_REPLACE('Juan Maria 25 años vive en la calle 13 de la avenida 14',' *[A-Za-z]*')
from dual;


Output:
  

Si se desesa saber si una cadena de números tiene texto, se cambia la expresión [A-Za-z] por [0-9].

select REGEXP_REPLACE('1Juan Maria 25 años vive en la calle 13 de la avenida 14',' *[0-9]*')
from dual;
 
Output:
 



2 comentarios: