ELIMINAR LETRAS DE UNA CADENA Y RECUPERAR UN ENTERO:
Una función para eliminar de una cadena los caracteres alfabéticos y dejar solamente números.
Es útil para aquellos casos en los que se hayan dejado ingresar en un campo que debe contener número caracteres alfabéticos y se los quiere eliminar.
Código sql:
Ver originalDELIMITER $$
DROP FUNCTION IF EXISTS `FN_ONLYNUM` $$
CREATE FUNCTION `FN_ONLYNUM` (VAR CHAR(100)) RETURNS CHAR(100)
DETERMINISTIC
BEGIN
DECLARE POS INT DEFAULT 1;
DECLARE TOTAL CHAR(100) DEFAULT '';
DECLARE VALOR INT DEFAULT 0;
REPEAT
IF INSTR('0123456789', SUBSTRING(VAR, POS, 1))>0 THEN
SET TOTAL = CONCAT(TOTAL,SUBSTRING(VAR, POS, 1));
END IF;
SET POS = POS + 1;
UNTIL POS > LENGTH(VAR) END REPEAT;
RETURN CAST(TOTAL AS SIGNED INTEGER);
END $$
DELIMITER ;
mysql> SELECT FN_ONLYNUM('M1010');
+---------------------+
| FN_ONLYNUM('M1010') |
+---------------------+
| 1010 |
+---------------------+
1 ROW IN SET (0.06 sec)
mysql> SELECT CAST(FN_ONLYNUM('M1010') AS UNSIGNED) NUMERO;
+--------+
| NUMERO |
+--------+
| 1010 |
+--------+
1 ROW IN SET (0.02 sec)
Esta función puede ser reescrita para recuperar sólo letras, decimales, flotantes, etc.