drop procedure if exists 获取姓名字符串;
DELIMITER $$
CREATE PROCEDURE 获取姓名字符串()
BEGIN
DECLARE 姓名长度 INT;
DECLARE i INT;
DECLARE 单个字符 CHAR(1);
DECLARE 学生姓名 VARCHAR(255);
DECLARE 完成 BOOL DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT 姓名 FROM md;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET 完成 = TRUE;
TRUNCATE TABLE zi;
OPEN cur;
fetch_loop: LOOP
FETCH cur INTO 学生姓名;
IF 完成 THEN
LEAVE fetch_loop;
END IF;
SET 姓名长度 = CHAR_LENGTH(学生姓名);
SET i = 1;
char_loop: LOOP
IF i > 姓名长度 THEN
LEAVE char_loop;
END IF;
SET 单个字符 = SUBSTRING(学生姓名, i, 1);
INSERT IGNORE INTO zi (字, 字数) VALUES (LOWER(单个字符), 1) ON DUPLICATE KEY UPDATE 字数 = 字数 + 1;
SET i = i + 1;
END LOOP char_loop;
END LOOP fetch_loop;
CLOSE cur;
SELECT GROUP_CONCAT(DISTINCT 字 ORDER BY 字 SEPARATOR '') AS 字符串 FROM zi;
SELECT COUNT(DISTINCT 字) INTO @n2 FROM zi;
SELECT @n2 AS 总唯一字符数;
END $$
DELIMITER ;
call 获取姓名字符串();