Funciones para mysql- Solo Numeros

Esta funcion, verifica si la cadena es numerico o string
CREATE FUNCTION IsNumeric (sIn varchar(1024)) RETURNS tinyint
RETURN sIn REGEXP '^(-|\\+){0,1}([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+|[0-9]+)$';
Ejemplo : select IsNumeric('a'); retorna 0;
Tambien si queremos extraer solo los numeros de una cadena podemos usar:
CREATE FUNCTION NumericOnly (val VARCHAR(255))
RETURNS VARCHAR
(255)
BEGIN
DECLARE idx INT DEFAULT 0;
IF ISNULL(val) THEN RETURN NULL; END IF;

IF LENGTH(val) = 0 THEN RETURN ""; END IF;

SET idx = LENGTH(val);
WHILE idx > 0 DO
IF IsNumeric(SUBSTRING(val,idx,1)) = 0 THEN
SET val = REPLACE(val,SUBSTRING(val,idx,1),"");
SET idx = LENGTH(val)+1;
END IF;
SET idx = idx - 1;
END WHILE;
RETURN val;
END;


Aqui usamos la funcion IsNumeric que definimos anteriormente.
Ejemplo : select NumericOnly('1&2')
Retorna 12;
select NumericOnly('abc987')  retorna 987
Fuente:http://stackoverflow.com/questions/2756736/how-to-only-select-numeric-data-from-mysql

Saludos
Adalberto Montanía


Comentarios

  1. Gran Aporte Adalberto, gracias por compartir tus conocimientos, me ayudaste un resto... saludos

    ResponderEliminar

Publicar un comentario