解决与存储功能:
CREATE FUNCTION `getNameInitials`(`fullname` VARCHAR(70))
RETURNS VARCHAR(70)
DETERMINISTIC
BEGIN
DECLARE `result` VARCHAR(70) DEFAULT '';
DECLARE `position` TINYINT;
DECLARE `separator` VARCHAR(1) DEFAULT ' ';
DECLARE `append` VARCHAR(1) DEFAULT '.';
DECLARE `buffer` VARCHAR(10);
SET `fullname` = CONCAT(TRIM(`fullname`), `separator`);
SET `position` = LOCATE(`separator`, `fullname`);
IF NOT `position`
THEN RETURN TRIM(`fullname`);
END IF;
SET `result` = LEFT(`fullname`, `position` - 1);
cycle: LOOP
SET `fullname` = SUBSTR(`fullname`, `position` + 1);
SET `position` = LOCATE(`separator`, `fullname`);
IF NOT `position` OR NOT LENGTH(`fullname`)
THEN LEAVE cycle;
END IF;
SET `buffer` = CONCAT(LEFT(`fullname`, 1), `append`);
SET `result` = CONCAT_WS(`separator`, `result`, `buffer`);
END LOOP cycle;
RETURN `result`;
END
经过与:
,并得到以下结果:
'Ivanov I. I.'
'Alym k. A.'