• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MySQL-procedure小试牛刀_MySQL

mysql 搞代码 4年前 (2022-01-09) 20次浏览 已收录 0个评论

根据spam_keyword表中的kid对word列逐行逐字分割到t表中,并且统计每个字的数量。

用了两层循环,外循环游标读行,内循环stroo++读字。

drop procedure if exists proc134f;CREATE PROCEDURE proc134f()BEGINdeclare kidoo int;declare tid int;declare stroo int;declare str varchar(255);declare strlength int;declare istr varchar(3);declare istr_cnt int;declare done int;-- 游标用declare cur_kid CURSOR for select kid from spam_keyword;-- 游标用declare continue handler for not found set done=1;-- 游标用,据说是直达引擎的通道set tid=0;delete from t;open cur_kid;-- 开启游标loop1:loop-- 开启1层外循环fetch cur_kid into kidoo;    -- 从定义的范围中读取下一行并赋予if done=1 then leave loop1;end if;-- 判断是否 found 下一行,否则跳出select word into str from spam_keyword where kid=kidoo;set str=replace(str,' ','');set strlength=char_length(str);set stroo=0;loop2:loop-- 2层内循环set stroo=stroo+1;set istr=substr(str,stroo,1);select count(*) into istr_cn<strong>本文来源gaodai#ma#com搞@代~码^网+</strong>t from t where t=istr;-- 计数if istr_cnt0 then update t set cnt=cnt+1 where t=istr;elseset tid=tid+1;insert into t set id=tid,t=istr,cnt=1;end if;if stroo>=strlength then leave loop2;end if;end loop loop2;set done=0;end loop loop1;close cur_kid;-- 关闭游标select * from t order by cnt desc;END;

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MySQL-procedure小试牛刀_MySQL
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址