vn-asterisk/sql/phone_format.sql

44 lines
891 B
SQL

/**
* Reformats a phone number
*
* @param v_phone The phone to format
* @return The formated phone or %NULL if bad sintax
**/
DROP FUNCTION IF EXISTS pbx.phone_format;
DELIMITER $$
CREATE FUNCTION pbx.phone_format (phone VARCHAR(255))
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE chr VARCHAR(1);
DECLARE len INT DEFAULT LENGTH(phone);
DECLARE newPhone VARCHAR(255) DEFAULT '';
WHILE i < len
DO
SET chr = SUBSTR(phone, i+1, 1);
IF chr REGEXP '^[0-9]$'
THEN
SET newPhone = CONCAT(newPhone, chr);
ELSEIF chr = '+' AND i = 0
THEN
SET newPhone = CONCAT(newPhone, '00');
END IF;
SET i = i + 1;
END WHILE;
IF newPhone REGEXP '^0+$' OR newPhone = '' THEN
RETURN NULL;
END IF;
IF newPhone REGEXP '^0034' THEN
SET newPhone = SUBSTR(newPhone, 5);
END IF;
RETURN newPhone;
END$$
DELIMITER ;