O sea que estás tratando de hacer algo parecido a esto:
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 ;
En definitiva, la idea de este código es que es más simple comparar contra un conjunto de 10 caracteres que contra 28.