РАЗДЕЛИТЕЛЬ $$;
УДАЛЕНИЕ ФУНКЦИИ ЕСЛИ СУЩЕСТВУЕТ `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);
установить я = 1;
установите rtnstr='';
ПОКА я <длина (нм) ДЕЛАТЬ
set rtn= ascii(substring(nm,i,1));
ЕСЛИ rtn>127, ТО
set rtn1= ascii(right(substring(nm,i,2),1));
ЕСЛИ rtn1> 127 ТО
ЕСЛИ i<длина(нм)-1, ТО
ЕСЛИ (ascii(right(substring(nm,i,3),1))>127 и ascii(right(substring(nm,i,4),1))>127) THEN
set sec=concat(right(concat('00',rtn-160),2),right(concat('00',rtn1-160),2),right(concat('00',ascii(right(подстрока) (nm,i,3),1))-160),2),right(concat('00',ascii(right(substring(nm,i,4),1))-160),2),' ');
ЕЩЕ
установить сек = '';
КОНЕЦ ЕСЛИ;
ЕЩЕ
установить сек = '';
КОНЕЦ ЕСЛИ ;
ЕЩЕ
set sec=concat(char(rtn),char(rtn1));
КОНЕЦ ЕСЛИ;
НАБОР я = я + 1;
ЕЩЕ
ЕСЛИ i<длина(нм)-1, ТО
ЕСЛИ (ascii(right(substring(nm,i,2),1))>127 и ascii(right(substring(nm,i,3),1))>127) THEN
set sec=concat(char(rtn),' ');
ЕЩЕ
установить сек = символ (rtn);
КОНЕЦ ЕСЛИ;
ЕЩЕ
ЕСЛИ (ascii(right(substring(nm,i,2),1))>127 и ascii(right(substring(nm,i,3),1))>127) THEN
установить сек = символ (rtn);
ЕЩЕ
set sec=char(rtn,ascii(right(substring(nm,i,2),1)));
КОНЕЦ ЕСЛИ;
КОНЕЦ ЕСЛИ;
КОНЕЦ ЕСЛИ;
установите rtnstr=concat(rtnstr,sec);
НАБОР я = я + 1;
КОНЕЦ ПОКА;
ВОЗВРАТ rtnstr;
КОНЕЦ$$
РАЗДЕЛИТЕЛЬ ;$$