MySQL57中 优化该函数 CREATE DEFINER=ioc FUNCTION getPhonef_string varchar3000 CHARACTER SET utf8mb4 RETURNS varchar11 CHARSET utf8BEGINDECLARE isPhone INT1 DEFAULT 0;DECLARE ipos INT11 DEFAULT 0;DECLARE ph
优化建议:
-
使用正则表达式替代循环判断,可以提高函数的执行效率。
-
减少变量的使用,例如可以不需要定义isPhone这个变量,直接使用SELECT REGEXP判断结果。
-
可以考虑将函数拆分成多个小函数,提高代码的可读性和可维护性。
优化后的函数如下:
CREATE DEFINER=ioc@% FUNCTION getPhone(f_string varchar(3000) CHARACTER SET utf8mb4) RETURNS varchar(11) CHARSET utf8
BEGIN
DECLARE phone VARCHAR(11) DEFAULT '';
SELECT SUBSTRING(f_string, REGEXP_INDEX(f_string, "[1][35678][0-9]{9}"), 11) INTO phone;
RETURN phone;
END
原文地址: https://www.cveoy.top/t/topic/fFeG 著作权归作者所有。请勿转载和采集!