mysql二元分词法函数

王朝mysql·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

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))>127) THEN

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))>127) THEN

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))>127) THEN

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 ;$$

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航