DROP FUNCTION IF EXISTS `getSplitName`$$ CREATE FUNCTION `getSplitName`(f_string text,f_delimiter varchar(100)) RETURNS text BEGIN /* 對逗號進行分離的字符串,分割出'登錄名_用戶名/部門名'中的_後部門字符串,以逗號拼接 例:"admin_管理員1,admin_管理員2,admin_管理員3,admin_管理員4,admin_管理員5"這種格式的字符串,調用func_get_name(str,"_") 可獲得"管理員1,管理員2,管理員3,管理員4,管理員5"這樣的字符串。 */ #Routine body goes here... DECLARE i int(11); DECLARE total int(11); DECLARE result text; DECLARE resulttemp text; SET i=1; SET result = ''; set resulttemp = '' ; set total = 1+(LENGTH(f_string)-LENGTH(replace(f_string,',',''))); IF(f_string is NULL or LENGTH(f_string)=0) THEN RETURN '無內容'; ELSE WHILE i<=total DO set resulttemp = REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(f_string,',',i)),',',1)); IF(LENGTH(result)=0) THEN set result = CONCAT(result,SUBSTRING_INDEX(resulttemp,f_delimiter,-1)); ELSE set result = CONCAT(CONCAT(result,','),SUBSTRING_INDEX(resulttemp,f_delimiter,-1)); END IF; set i = i+1; END WHILE; END IF; RETURN result; END