/**DROP function IF EXISTS aidGetLeiMuCode;
DELIMITER $$
create function aidGetLeiMuCode(str VARCHAR(2000))
RETURNS VARCHAR(2000)
BEGIN
DECLARE pos INT;
DECLARE fgstr VARCHAR(2000);
DECLARE vstr VARCHAR(2000);
DECLARE rstr VARCHAR(2000);
DECLARE vcode VARCHAR(2000);
SET vstr=TRIM(str);
SET pos=Instr(str, '-');
set rstr = '';
set fgstr = '';
WHILE pos > 0 DO
set vcode = SUBSTRING(str, 1, pos - 1);
set rstr = Concat(rstr,aidGetLeiMuItem(vcode));
set fgstr = Concat(fgstr,',');
set rstr = Concat(rstr,fgstr);
SET pos=Locate('-', str, pos + 1);
END WHILE;
set rstr = Concat(rstr,aidGetLeiMuItem(vstr),fgstr,',');
return rstr ;
end $$
DELIMITER ;
**/
DROP function IF EXISTS aidGetLeiMuCode;
DELIMITER $$
create function aidGetLeiMuCode(str VARCHAR(2000))
RETURNS VARCHAR(2000)
BEGIN
DECLARE pos INT;
DECLARE fgstr VARCHAR(2000);
DECLARE vstr VARCHAR(2000);
DECLARE rstr VARCHAR(2000);
DECLARE vcode VARCHAR(2000);
DECLARE indexs INT;
SET vstr=TRIM(str);
SET pos=Instr(str, '-');
set rstr = '';
set fgstr = '';
set indexs = 1;
WHILE pos > 0 DO
set vcode = SUBSTRING(str, 1, pos - 1);
set rstr = Concat(rstr,aidGetLeiMuItem(vcode));
case(indexs)
when 1 Then set fgstr = 'AA';
when 2 Then set fgstr = 'BB';
when 3 Then set fgstr = 'CC';
when 4 Then set fgstr = 'DD';
when 5 Then set fgstr = 'EE';
when 6 Then set fgstr = 'FF';
when 7 Then set fgstr = 'GG';
when 8 Then set fgstr = 'HH';
when 9 Then set fgstr = 'II';
when 10 Then set fgstr = 'JJ';
when 11 Then set fgstr = 'KK';
when 12 Then set fgstr = 'LL';
when 13 Then set fgstr = 'MM';
when 14 Then set fgstr = 'NN';
when 15 Then set fgstr = 'OO';
when 16 Then set fgstr = 'PP';
when 17 Then set fgstr = 'QQ';
when 18 Then set fgstr = 'RR';
when 19 Then set fgstr = 'SS';
when 20 Then set fgstr = 'TT';
when 21 Then set fgstr = 'UU';
when 22 Then set fgstr = 'VV';
when 23 Then set fgstr = 'WW';
when 24 Then set fgstr = 'XX';
when 25 Then set fgstr = 'YY';
when 26 Then set fgstr = 'ZZ';
else set fgstr = ',';
end case;
set rstr = Concat(rstr,fgstr);
SET pos=Locate('-', str, pos + 1);
set indexs = indexs + 1;
END WHILE;
case(indexs)
when 1 Then set fgstr = 'AA';
when 2 Then set fgstr = 'BB';
when 3 Then set fgstr = 'CC';
when 4 Then set fgstr = 'DD';
when 5 Then set fgstr = 'EE';
when 6 Then set fgstr = 'FF';
when 7 Then set fgstr = 'GG';
when 8 Then set fgstr = 'HH';
when 9 Then set fgstr = 'II';
when 10 Then set fgstr = 'JJ';
when 11 Then set fgstr = 'KK';
when 12 Then set fgstr = 'LL';
when 13 Then set fgstr = 'MM';
when 14 Then set fgstr = 'NN';
when 15 Then set fgstr = 'OO';
when 16 Then set fgstr = 'PP';
when 17 Then set fgstr = 'QQ';
when 18 Then set fgstr = 'RR';
when 19 Then set fgstr = 'SS';
when 20 Then set fgstr = 'TT';
when 21 Then set fgstr = 'UU';
when 22 Then set fgstr = 'VV';
when 23 Then set fgstr = 'WW';
when 24 Then set fgstr = 'XX';
when 25 Then set fgstr = 'YY';
when 26 Then set fgstr = 'ZZ';
else set fgstr = ',';
end case;
set rstr = Concat(rstr,aidGetLeiMuItem(vstr),fgstr);
return rstr ;
end $$
DELIMITER ;
DROP function IF EXISTS aidGetLeiMuItem;
DELIMITER $$
create function aidGetLeiMuItem(lmCode VARCHAR(2000))
RETURNS VARCHAR(2000)
BEGIN
DECLARE rstr VARCHAR(2000);
DECLARE done INT DEFAULT 0;
DECLARE Col_c1 VARCHAR(200);
DECLARE cur CURSOR FOR (select Item from sys_Classsetup where ItemCode in(lmCode));
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
Set rstr = '';
Open cur;
Repeat
FETCH cur INTO Col_c1;
IF NOT done THEN
Set rstr = Col_c1;
end if;
UNTIL done END REPEAT;
Close cur;
return rstr;
end $$
DELIMITER ;
##select aidGetLeiMuCode(t1.LeiMu) from app_assetcustominfo50 t1
DELIMITER $$
create function aidGetLeiMuCode(str VARCHAR(2000))
RETURNS VARCHAR(2000)
BEGIN
DECLARE pos INT;
DECLARE fgstr VARCHAR(2000);
DECLARE vstr VARCHAR(2000);
DECLARE rstr VARCHAR(2000);
DECLARE vcode VARCHAR(2000);
SET vstr=TRIM(str);
SET pos=Instr(str, '-');
set rstr = '';
set fgstr = '';
WHILE pos > 0 DO
set vcode = SUBSTRING(str, 1, pos - 1);
set rstr = Concat(rstr,aidGetLeiMuItem(vcode));
set fgstr = Concat(fgstr,',');
set rstr = Concat(rstr,fgstr);
SET pos=Locate('-', str, pos + 1);
END WHILE;
set rstr = Concat(rstr,aidGetLeiMuItem(vstr),fgstr,',');
return rstr ;
end $$
DELIMITER ;
**/
DROP function IF EXISTS aidGetLeiMuCode;
DELIMITER $$
create function aidGetLeiMuCode(str VARCHAR(2000))
RETURNS VARCHAR(2000)
BEGIN
DECLARE pos INT;
DECLARE fgstr VARCHAR(2000);
DECLARE vstr VARCHAR(2000);
DECLARE rstr VARCHAR(2000);
DECLARE vcode VARCHAR(2000);
DECLARE indexs INT;
SET vstr=TRIM(str);
SET pos=Instr(str, '-');
set rstr = '';
set fgstr = '';
set indexs = 1;
WHILE pos > 0 DO
set vcode = SUBSTRING(str, 1, pos - 1);
set rstr = Concat(rstr,aidGetLeiMuItem(vcode));
case(indexs)
when 1 Then set fgstr = 'AA';
when 2 Then set fgstr = 'BB';
when 3 Then set fgstr = 'CC';
when 4 Then set fgstr = 'DD';
when 5 Then set fgstr = 'EE';
when 6 Then set fgstr = 'FF';
when 7 Then set fgstr = 'GG';
when 8 Then set fgstr = 'HH';
when 9 Then set fgstr = 'II';
when 10 Then set fgstr = 'JJ';
when 11 Then set fgstr = 'KK';
when 12 Then set fgstr = 'LL';
when 13 Then set fgstr = 'MM';
when 14 Then set fgstr = 'NN';
when 15 Then set fgstr = 'OO';
when 16 Then set fgstr = 'PP';
when 17 Then set fgstr = 'QQ';
when 18 Then set fgstr = 'RR';
when 19 Then set fgstr = 'SS';
when 20 Then set fgstr = 'TT';
when 21 Then set fgstr = 'UU';
when 22 Then set fgstr = 'VV';
when 23 Then set fgstr = 'WW';
when 24 Then set fgstr = 'XX';
when 25 Then set fgstr = 'YY';
when 26 Then set fgstr = 'ZZ';
else set fgstr = ',';
end case;
set rstr = Concat(rstr,fgstr);
SET pos=Locate('-', str, pos + 1);
set indexs = indexs + 1;
END WHILE;
case(indexs)
when 1 Then set fgstr = 'AA';
when 2 Then set fgstr = 'BB';
when 3 Then set fgstr = 'CC';
when 4 Then set fgstr = 'DD';
when 5 Then set fgstr = 'EE';
when 6 Then set fgstr = 'FF';
when 7 Then set fgstr = 'GG';
when 8 Then set fgstr = 'HH';
when 9 Then set fgstr = 'II';
when 10 Then set fgstr = 'JJ';
when 11 Then set fgstr = 'KK';
when 12 Then set fgstr = 'LL';
when 13 Then set fgstr = 'MM';
when 14 Then set fgstr = 'NN';
when 15 Then set fgstr = 'OO';
when 16 Then set fgstr = 'PP';
when 17 Then set fgstr = 'QQ';
when 18 Then set fgstr = 'RR';
when 19 Then set fgstr = 'SS';
when 20 Then set fgstr = 'TT';
when 21 Then set fgstr = 'UU';
when 22 Then set fgstr = 'VV';
when 23 Then set fgstr = 'WW';
when 24 Then set fgstr = 'XX';
when 25 Then set fgstr = 'YY';
when 26 Then set fgstr = 'ZZ';
else set fgstr = ',';
end case;
set rstr = Concat(rstr,aidGetLeiMuItem(vstr),fgstr);
return rstr ;
end $$
DELIMITER ;
DROP function IF EXISTS aidGetLeiMuItem;
DELIMITER $$
create function aidGetLeiMuItem(lmCode VARCHAR(2000))
RETURNS VARCHAR(2000)
BEGIN
DECLARE rstr VARCHAR(2000);
DECLARE done INT DEFAULT 0;
DECLARE Col_c1 VARCHAR(200);
DECLARE cur CURSOR FOR (select Item from sys_Classsetup where ItemCode in(lmCode));
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
Set rstr = '';
Open cur;
Repeat
FETCH cur INTO Col_c1;
IF NOT done THEN
Set rstr = Col_c1;
end if;
UNTIL done END REPEAT;
Close cur;
return rstr;
end $$
DELIMITER ;
##select aidGetLeiMuCode(t1.LeiMu) from app_assetcustominfo50 t1
转载于:https://blog.51cto.com/fluagen/155530