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 ;$$
Loading...
Loading...- 2007-9-14关于sql server下无限多级别分类查询解决办法
- 2007-9-14mysql二元分词法函数
- 2007-9-14sql server 2005扩充技巧
- 2007-9-14oracle 分析函数的使用
- 2007-9-14oracle重装时问题解决方案
- 2007-9-14一次大批量数据备份和导入工作
- 2007-9-14两表(多表)关联update的写法
- 2007-9-14特殊sql语句及优化原则
- 2007-9-14sql server 2000无法打开1433端口
- 2007-9-14解决SQL Server 2000 JDBC 驱动程序BUG
Loading...