ตัวคั่น $$;
DROP FUNCTION หากมี `radius`.`fun_split`$$
CREATE DEFINER=`root`@`% ` FUNCTION `fun_split`(nm varchar(100)) ส่งคืน varchar(500) CHARSET latin1
อ่านข้อมูล SQL
เริ่ม
ประกาศฉัน int;
ประกาศ rtn int;
ประกาศ rtn1 int;
ประกาศวินาที varchar (10);
ประกาศ rtnstr varchar (500);
ตั้งค่า i=1;
ตั้ง rtnstr='';
ในขณะที่ฉัน <ความยาว (นาโนเมตร) ทำ
set rtn= ascii(สตริงย่อย(nm,i,1));
ถ้า rtn>127 แล้ว
set rtn1= ascii(right(สตริงย่อย(nm,i,2),1));
ถ้า rtn1> 127 แล้ว
ถ้าฉัน<ความยาว(นาโนเมตร)-1 แล้ว
IF (ascii(right(substring(nm,i,3),1))>127 และ ascii(right(substring(nm,i,4),1))>127) แล้ว
ตั้ง sec=concat(ขวา(concat('00',rtn-160),2),ขวา(concat('00',rtn1-160),2),ขวา(concat('00',ascii(ขวา(สตริงย่อย (nm,i,3),1))-160),2),right(concat('00',ascii(right(สตริงย่อย(nm,i,4),1))-160),2),' ');
อื่น
ตั้งวินาที='';
สิ้นสุดถ้า;
อื่น
ตั้งวินาที='';
สิ้นสุด ถ้า ;
อื่น
ตั้ง sec=concat(ถ่าน(rtn),ถ่าน(rtn1));
สิ้นสุดถ้า;
SET i = ฉัน + 1;
อื่น
ถ้าฉัน<ความยาว(นาโนเมตร)-1 แล้ว
IF (ascii(right(substring(nm,i,2),1))>127 และ ascii(right(substring(nm,i,3),1))>127) แล้ว
set sec=concat(ถ่าน(rtn),' ');
อื่น
ตั้งวินาที = ถ่าน (rtn);
สิ้นสุดถ้า;
อื่น
IF (ascii(right(substring(nm,i,2),1))>127 และ ascii(right(substring(nm,i,3),1))>127) แล้ว
ตั้งวินาที = ถ่าน (rtn);
อื่น
set sec=char(rtn,ascii(right(สตริงย่อย(nm,i,2),1)));
สิ้นสุดถ้า;
สิ้นสุดถ้า;
สิ้นสุดถ้า;
ตั้ง rtnstr=concat(rtnstr,วินาที);
SET i = ฉัน + 1;
สิ้นสุดในขณะที่;
กลับ rtnstr;
สิ้นสุด$$
ตัวคั่น ;$$