mysql二元分词法函数

DELIMITER $$;

DROP FUNCTION IF EXISTS `radius`.`fun_split`$$

CREATE DEFINER=`root`@`%FUNCTION `fun_split`(nm varchar(100)) RETURNS varchar(500) CHARSET latin1
    READS SQL DATA
BEGIN
      
declare i int;
      
declare rtn int;
      
declare rtn1 int;
      
declare sec varchar(10);
      
declare rtnstr varchar(500);
          
set i=1;
      
set rtnstr='';
          
WHILE i <length(nm) DO
      
set rtn= ascii(substring(nm,i,1));
      
IF rtn>127 THEN 
         
set rtn1= ascii(right(substring(nm,i,2),1));
         
IF rtn1> 127 THEN
            
IF i<length(nm)-1 THEN
          
IF (ascii(right(substring(nm,i,3),1))>127 and ascii(right(substring(nm,i,4),1))>127THEN
             
set sec=concat(right(concat('00',rtn-160),2),right(concat('00',rtn1-160),2),right(concat('00',ascii(right(substring(nm,i,3),1))-160),2),right(concat('00',ascii(right(substring(nm,i,4),1))-160),2),' ');
          
ELSE
             
set sec='';
          
END IF;
            
ELSE
          
set sec='';
            
END IF ;
         
ELSE
            
set sec=concat(char(rtn),char(rtn1));
         
END IF;
         
SET i = i + 1;
      
ELSE 
         
IF i<length(nm)-1 THEN
          
IF (ascii(right(substring(nm,i,2),1))>127 and ascii(right(substring(nm,i,3),1))>127THEN
              
set sec=concat(char(rtn),' ');
          
ELSE
              
set sec=char(rtn);
          
END IF;
         
ELSE
          
IF (ascii(right(substring(nm,i,2),1))>127 and ascii(right(substring(nm,i,3),1))>127THEN
              
set sec=char(rtn);
          
ELSE
              
set sec=char(rtn,ascii(right(substring(nm,i,2),1)));
          
END IF;
         
END IF;
         
      
END IF;
      
set rtnstr=concat(rtnstr,sec);
      
SET i = i + 1;
      
      
END WHILE;
       
RETURN rtnstr;
      
END$$

DELIMITER ;$$
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值