DELIMITER $$
DROP FUNCTION IF EXISTS `uReplaceNon_Numer`$$
CREATE FUNCTION `uReplaceNon_Numer`(in_phone varchar(50)) RETURNS varchar(50) CHARSET latin1
NO SQL
BEGIN
DECLARE ctrNumber varchar(50);
DECLARE finNumber varchar(50) default ' ';
DECLARE sChar varchar(2);
DECLARE inti INTEGER default 1;
-- RETURN 'hello1';
IF length(in_phone) > 0 THEN
-- RETURN 'hello2';
WHILE(inti <= length(in_phone)) DO
-- RETURN 'hello3';
SET sChar= SUBSTRING(in_phone,inti,1);
-- RETURN sChar;
SET ctrNumber= FIND_IN_SET(sChar,'0,1,2,3,4,5,6,7,8,9');
-- RETURN ctrNumber;
IF ctrNumber > 0 THEN
SET finNumber=CONCAT(finNumber,sChar);
-- RETURN CONCAT('in if',finNumber);
ELSE
SET finNumber=CONCAT(finNumber,' ');
-- RETURN CONCAT('in else',finNumber);
END IF;
SET inti=inti+1;
END WHILE;
RETURN finNumber;
ELSE
RETURN 'Invalid';
END IF;
END$$
DELIMITER ;
## Usage
SELECT b.bolNum, (uReplaceNon_Numer(r.barcodeRangeMax) - uReplaceNon_Numer(r.barcodeRangeMin)) barcodes FROM wh_bol_range r INNER JOIN wh_bol b ON (b.bolId=r.bolId) ORDER BY barcodes DESC LIMIT 0,20;
Comments