这个是关键代码
delimiter $$
create procedure get_name_str()
begin
declare name_length int;
declare i int;
declare single_char char(1);
declare student_name varchar(255);
declare done bool default false;
declare cur cursor for select 姓名 from md;
declare continue handler for not found set done = true;
truncate table zi;
open cur;
fetch_loop: loop
fetch cur into student_name;
if done then
leave fetch_loop;
end if;
set name_length = char_length(student_name);
set i = 1;
char_loop: loop
if i > name_length then
leave char_loop;
end if;
set single_char = substring(student_name, i, 1);
insert into zi (字, 字数)
values (lower(single_char), 1)
on duplicate key update 字数 = 字数 + 1;
set i = i + 1;
end loop char_loop;
end loop fetch_loop;
close cur;
select 字 from zi;
select count(distinct 字) into @n2 from zi;
select @n2 as total_unique_chars;
end $$
delimiter ;
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.53 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| lll |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> create database last;
Query OK, 1 row affected (0.00 sec)
mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)
mysql> use last;
Database changed
mysql> source C:\Users\Administrator\Desktop\文件接收柜\ks.sql;
ERROR:
Unknown command '\U'.
ERROR:
Unknown command '\A'.
ERROR:
Unknown command '\D'.
ERROR:
Unknown command '\?.
ERROR:
Unknown command '\k'.
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 88 rows affected (0.00 sec)
Records: 88 Duplicates: 0 Warnings: 0
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter $$
mysql> create procedure get_name_str()
-> begin
-> declare name_length int;
-> declare i int;
-> declare single_char char(1);
-> declare student_name varchar(255);
-> declare done bool default false;
->
-> declare cur cursor for select 姓名 from md;
-> declare continue handler for not found set done = true;
->
-> truncate table zi;
->
-> open cur;
->
-> fetch_loop: loop
-> fetch cur into student_name;
-> if done then
-> leave fetch_loop;
-> end if;
->
-> set name_length = char_length(student_name);
-> set i = 1;
->
-> char_loop: loop
-> if i > name_length then
-> leave char_loop;
-> end if;
->
-> set single_char = substring(student_name, i, 1);
->
-> insert into zi (字, 字数)
-> values (lower(single_char), 1)
-> on duplicate key update 字数 = 字数 + 1;
->
-> set i = i + 1;
-> end loop char_loop;
-> end loop fetch_loop;
->
-> close cur;
->
-> select 字 from zi;
-> select count(distinct 字) into @n2 from zi;
-> select @n2 as total_unique_chars;
-> end $$
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql>
mysql> CALL get_name_str();
+----+
| 字 |
+----+
| 谢 |
| 佩 |
| 容 |
| 邝 |
| 灏 |
| 林 |
| 郭 |
| 乔 |
| 治 |
| 彭 |
| 炜 |
| 健 |
| 蔡 |
| 抒 |
| 恒 |
| 高 |
| 灿 |
| 钊 |
| 林 |
| 清 |
| 城 |
| 谭 |
| 文 |
| 陈 |
| 建 |
| 鸿 |
| 欧 |
| 阳 |
| 彤 |
| 彤 |
| 何 |
| 发 |
| 科 |
| 苏 |
| 健 |
| 灏 |
| 龙 |
| 麒 |
| 宇 |
| 李 |
| 俊 |
| 杰 |
| 赖 |
| 济 |
| 民 |
| 马 |
| 培 |
| 林 |
| 黄 |
| 家 |
| 希 |
| 林 |
| 晓 |
| 敏 |
| 黄 |
| 日 |
| 扬 |
| 刘 |
| 楚 |
| 豪 |
| 肖 |
| 国 |
| 金 |
| 庄 |
| 静 |
| 宜 |
| 叶 |
| 泓 |
| 伸 |
| 张 |
| 文 |
| 达 |
| 祝 |
| 振 |
| 杰 |
| 邓 |
| 丽 |
| 欣 |
| 刘 |
| 邦 |
| 铭 |
| 洪 |
| 喜 |
| 珊 |
| 杨 |
| 子 |
| 峰 |
| 刘 |
| 恒 |
| 许 |
| 小 |
| 源 |
| 梁 |
| 英 |
| 伟 |
| 严 |
| 俊 |
| 杰 |
| 郭 |
| 景 |
| 群 |
| 黄 |
| 振 |
| 发 |
| 甘 |
| 子 |
| 贤 |
| 刘 |
| 浩 |
| 何 |
| 宇 |
| 龙 |
| 曾 |
| 加 |
| 宝 |
| 唐 |
| 金 |
| 灵 |
| 麦 |
| 一 |
| 涛 |
| 林 |
| 展 |
| 弘 |
| 黄 |
| 家 |
| 乐 |
| 郑 |
| 欢 |
| 祖 |
| 刘 |
| 薇 |
| 雪 |
| 杨 |
| 文 |
| 塘 |
| 何 |
| 家 |
| 伟 |
| 石 |
| 欣 |
| 雨 |
| 丘 |
| 佳 |
| 烨 |
| 欧 |
| 悦 |
| 李 |
| 均 |
| 铄 |
| 张 |
| 宇 |
| 王 |
| 梓 |
| 帆 |
| 林 |
| 桐 |
| 宇 |
| 叶 |
| 芃 |
| 林 |
| 志 |
| 聪 |
| 林 |
| 泽 |
| 涛 |
| 陈 |
| 庆 |
| 楠 |
| 刘 |
| 斌 |
| 吴 |
| 燕 |
| 羽 |
| 黎 |
| 明 |
| 璋 |
| 钟 |
| 明 |
| 智 |
| 张 |
| 志 |
| 成 |
| 黄 |
| 希 |
| 扬 |
| 唐 |
| 颂 |
| 尧 |
| 邓 |
| 禧 |
| 胜 |
| 曾 |
| 欣 |
| 晴 |
| 周 |
| 烨 |
| 高 |
| 小 |
| 雪 |
| 张 |
| 耀 |
| 文 |
| 奕 |
| 龙 |
| 张 |
| 宝 |
| 程 |
| 潘 |
| 林 |
| 煌 |
| 周 |
| 豪 |
| 吴 |
| 嘉 |
| 黄 |
| 国 |
| 新 |
| 陈 |
| 超 |
| 杰 |
| 赖 |
| 世 |
| 润 |
| 陈 |
| 庚 |
| 豪 |
| 姚 |
| 映 |
| 晖 |
| 许 |
| 杰 |
| 维 |
| 何 |
| 啟 |
| 朗 |
| 张 |
| 梓 |
| 填 |
| 冀 |
| 翼 |
| 林 |
| 杜 |
| 锋 |
| 蔡 |
| 锦 |
| 涛 |
| 刘 |
| 晓 |
| 圳 |
| 刁 |
| 锐 |
+----+
252 rows in set (0.16 sec)
+--------------------+
| total_unique_chars |
+--------------------+
| 166 |
+--------------------+
1 row in set (0.23 sec)
Query OK, 0 rows affected (0.23 sec)

被折叠的 条评论
为什么被折叠?



