下面是一个示例函数,使用MySQL语法,它将接受未格式化的电话号码并返回格式化的电话号码列表:
CREATE FUNCTION format_phone_numbers(phone_list VARCHAR(255))
RETURNS VARCHAR(255)
BEGIN
DECLARE delimiter_char VARCHAR(1) DEFAULT ",";
DECLARE num_list_len INT DEFAULT 0;
DECLARE output_list VARCHAR(255) DEFAULT '';
SET num_list_len = LENGTH(phone_list) - LENGTH(REPLACE(phone_list, delimiter_char, '')) + 1;
IF num_list_len = 0 THEN
RETURN '';
END IF;
WHILE num_list_len > 0 DO
DECLARE phone_number VARCHAR(20) DEFAULT '';
DECLARE next_delimiter INT DEFAULT 0;
SET next_delimiter = LOCATE(delimiter_char, phone_list);
IF next_delimiter = 0 THEN
SET phone_number = TRIM(phone_list);
ELSE
SET phone_number = TRIM(SUBSTRING(phone_list, 1, next_delimiter - 1));
SET phone_list = SUBSTRING(phone_list, next_delimiter+1);
END IF;
IF LENGTH(phone_number) = 10 THEN
SET output_list = CONCAT(output_list, FORMAT('%s-%s-%s',
SUBSTRING(phone_number, 1, 3),
SUBSTRING(phone_number, 4, 3),
SUBSTRING(phone_number, 7)));
ELSEIF LENGTH(phone_number) = 7 THEN
SET output_list = CONCAT(output_list, FORMAT('%s-%s',
SUBSTRING(phone_number, 1, 3),
SUBSTRING(phone_number, 4)));
END IF;
IF num_list_len > 1 THEN
SET output_list = CONCAT(output_list, ',');
END IF;
SET num_list_len = num_list_len - 1;
END WHILE;
RETURN output_list;
END;
要使用此函数,请执行以下语句:
SELECT format_phone_numbers('1234567890,1234567,5551234567') AS formatted_numbers;
结果应该为:`123-456-7890,123-4567,555-123-456