Oracle

Validar solo numeros en Oracle

Por : Jhons_1101
2016-08-11
Tags :
Para validar una cadena de caracteres con Oracle, podemos ayudarnos de las expresiones regulares. Para este caso. Implementaremos un patrón que evalúa sólo caracteres numéricos. Apoyándonos de la función interna de Oracle 'REGEXP_LIKE'.

Sintaxis

REGEXP_LIKE ( Cadena, Patrón [ ] )

*Parametros

Cadena

Será una expresión de caracteres o una columna o campo de tabla. Puede ser un VARCHAR2, CHAR, NVARCHAR2, NCHAR, CLOB o tipo de datos NCLOB.

Patrón de validación

La expresión regular que coincida con la validación. Puede ser una combinación de los siguientes:

Valor Descripción
^ Coincide con el comienzo de una cadena. Si se utiliza con un match_parameter de 'm', que coincide con el inicio de una línea en cualquier lugar dentro de la expresión.
$ Coincide con el final de una cadena. Si se utiliza con un match_parameter de 'm', que coincide con el final de una línea en cualquier lugar dentro de la expresión.
* Coincide con cero o más ocurrencias.
+ Coincide con una o más ocurrencias
? Concuerda con cero o una ocurrencia.
. Coincide con cualquier carácter excepto NULL.
Para conocer las demás combinaciones de patrones, sigue este enlace.

Para este caso crearemos el patrón '^[0-9]+$', que nos validará nuestra cadena o campo con todos los numeros del cero (0) al nueve (9). en donde nos dice que la cadena debe de empezar ('^') con un número entre 0-9, que puede coincidir con mas de una ocurrencia, es decir que puede haber en la cadena varios números ('$') y que el final ('$') debe de acabar con un número. En pocas palabras que toda la cadena tenga números.

Veamos unos ejemplos.


compartir en facebook compartir en Google compartir en Twitter compartir en Blogger compartir como código embebido compartir la url


/* Ejemplo 1*/
SELECT * FROM dual
WHERE REGEXP_LIKE ('1234567as890', '^[0-9]+$');
/* Nos devolvera un FALSE, ya que no todos los caracteres no son númericos. */


/* Ejemplo 2*/
SELECT * FROM dual
WHERE REGEXP_LIKE ('788975', '^[0-9]+$');
/* Nos devolverá TRUE, porque toda la cadena es númerica. */


/* Ejemplo 3*/
SELECT * FROM dual
WHERE REGEXP_LIKE ('asdasd', '^[0-9]+$');
/* Nos devolverá un FALSE, ya que en la cadena no hay ningún caracter númerico. */

Si deseas mas información puedes pulsar el enlace para que le saques mayor provecho a este post.





Si este contenido te fue útil, no olvides compartirlo en redes sociales, Considéralo. Puede ser la manera de agradecer!


Agrega tu comentario...

Puedes utilizar etiquetas <pre></pre>, <p></p>, <div></div>, + (Nombre usuario, para responderle a alguien)

3XaEVgN





jhons1101
2018-08-09 14:01:23
Buen día hilarioesteban si deseas eliminar cada uno de estos caracteres... debes de hacer una validación REGEXP_LIKE por cada una de ellas de manera anidada, ya que cada expresión REGEXP_LIKE devuelve true o false... Espero te sirva...
hilarioesteban
2018-08-08 23:24:32
si deseo eliminar todos los caracteres que no sean números, ejemplo: raya ("-"), arroba ("@"), espacios en blanco (" "), puntos ("."), comas (","), punto y coma (";"), me puedes ayudar
Esta entrada no cuenta con imágenes adjuntas

Unete al grupo de whatsApp +57 316 392 6456

Sigue el grupo en facebook

Siguenos.....