mysql拆分字符串函数

 业务需求:拆分字符串,然后将数字转换成中文描述,返回成以,分割的中文描述 

 

-- 修改结束符,防止在mysql命令行中默认分号直接运行  
delimiter $$  
  
-- 创建一个计算拆分后字符串的个数函数  
drop function if exists calc_length $$  
create function calc_length(str varchar(200), splitstr varchar(5)) returns int(11)  
begin   
return length(str)-length(replace(str, splitstr, ''))+1;  
end $$  
  
-- 创建一个模拟的split拆分字符串的函数  
drop function if exists split_string $$  
create function split_string(str varchar(200), splitstr varchar(5), strindex int) returns varchar(255)  
begin  
declare result varchar(255) default '';  
set result =reverse(substring_index( reverse(substring_index(str, splitstr, strindex)), splitstr, 1));  
return result;  
end $$  
  
-- 创建一个循环函数
delimiter $$  
drop function if exists split_model $$
create function split_model(str varchar(200))  returns varchar(2000) 
begin  
declare cnt int default 0;  
declare i int default 0;  
declare result  VARCHAR(2000) DEFAULT ' ';
declare ab  VARCHAR(20)DEFAULT ' ';
declare ac  VARCHAR(20)DEFAULT ' ';
set cnt = calc_length(str, '|');    
while i < cnt   
do   
set i = i+1;  
set ab=split_string(str,'|', i);
if ab='1' then set ac='CPM';
elseif ab='2'  
then set ac= 'CPC';
elseif ab='3' then set ac='CPA';
elseif ab='4' then set ac='CPT';
else set ac='CPS';
end if;
set result=CONCAT(result,ac,','); 
END WHILE;
return result;
end $$  


-- 创建一个循环函数
delimiter $$  
drop function if exists split_mediatype $$
create function split_mediatype(str varchar(200))  returns varchar(2000) 
begin  
declare cnt int default 0;  
declare i int default 0;  
declare result  VARCHAR(2000) DEFAULT ' ';
declare ab  VARCHAR(20)DEFAULT ' ';
declare ac  VARCHAR(20)DEFAULT ' ';
set cnt = calc_length(str, ',');    
while i < cnt   
do   
set i = i+1;  
set ab=split_string(str,',', i);
if ab='0' then set ac='购物';
elseif ab='1'  
then set ac= '游戏';
elseif ab='2' then set ac='小说';
elseif ab='3' then set ac='影视';
elseif ab='4' then set ac='教育';
elseif ab='5' then set ac='应用';
else set ac='工具';
end if;
set result=CONCAT(result,ac,','); 
END WHILE;
return result;
end $$  

-- 创建一个循环函数
delimiter $$  
drop function if exists split_mediauser $$
create function split_mediauser(str varchar(200))  returns varchar(2000) 
begin  
declare cnt int default 0;  
declare i int default 0;  
declare result  VARCHAR(2000) DEFAULT ' ';
declare ab  VARCHAR(20)DEFAULT ' ';
declare ac  VARCHAR(20)DEFAULT ' ';
set cnt = calc_length(str, '|');    
while i < cnt   
do   
set i = i+1;  
set ab=split_string(str,'|', i);
set ac= (select name_cn FROM sp_user where id=ab);
set result=CONCAT(result,ac,','); 
END WHILE;
return result;
end $$  




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值