学习mysql存储过程--如何处理字符串字符个数

# 需求分析:

 实现代码:

 1、创建表格

CREATE TABLE label_table (
    company varchar(200)PRIMARY KEY ,
    label varchar(255),
    label_num varchar(255)
);


 2、定义存储过程

delimiter $$
drop procedure if exists  insert_update_table;
create procedure insert_update_table(In in_company varchar(200), In in_label varchar(255)) 
BEGIN
    declare selectedCOUNT int default 0;
    declare newLabel varchar(200) default '';
    declare oldLabel varchar(200);
    declare newLabelNum varchar(400);
    declare tmpStr varchar(200);
    declare newLabelCopy varchar(200);
    declare t int;    
    # 声明一个自定义的变量
    select count(*) into selectedCOUNT
    from label_table 
    where label_table.company=in_company;
    if (selectedCOUNT>0) then 
        select label into oldLabel
        from label_table 
        where label_table.company=in_company;
        set oldLabel =  IFNULL(oldLabel, '');
        set newLabel =  CONCAT(oldLabel , in_label);
    else 
        set newLabel =  in_label;
    end if;
    set newLabelNum = '';
    set newLabelCopy = newLabel;
    while length(newLabelCopy)>0 DO
        set tmpStr = left(newLabelCopy,1);
        set t = length(newLabelCopy)-length(replace(newLabelCopy,tmpStr,''));
        set newLabelNum =  CONCAT(newLabelNum , tmpStr , concat(t,''));
        set newLabelCopy = replace(newLabelCopy,tmpStr,'');     
    end while;
    if (selectedCOUNT>0) then 
        update label_table SET label=newLabel, label_num=newLabelNum  where company = in_company;
    else
        BEGIN
            insert into label_table(company,label,label_num) values(in_company,newLabel,newLabelNum);
        END;
    end if;
    COMMIT;
END$$
delimiter ;

 3. 测试

INSERT INTO label_table(company,label) VALUES('A', 'tyutyt');
INSERT INTO label_table(company,label) VALUES('B', 'werwe');
select * from label_table;
call insert_update_table('a','');
select * from label_table;
call insert_update_table('b','');
select * from label_table;

效果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

广大菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值