仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1520|回复: 9
打印 上一主题 下一主题

[学习教程] 发布mysql二元分词法函数

[复制链接]
小女巫 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 20:14:02 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在我们工作的过程中,经常能听到很多不使用MySQL的理由,虽然其中有一些是对MySQL的误解,不过同样也有一些是合情合理的。DELIMITER$$;
DROPFUNCTIONIFEXISTS`radius`.`fun_split`$$
CREATEDEFINER=`root`@`%`FUNCTION`fun_split`(nmvarchar(100))RETURNSvarchar(500)CHARSETlatin1
READSSQLDATA
BEGIN
declareiint;
declarertnint;
declarertn1int;
declaresecvarchar(10);
declarertnstrvarchar(500);
seti=1;
setrtnstr=;
WHILEi<length(nm)DO
setrtn=ascii(substring(nm,i,1));
IFrtn>127THEN
setrtn1=ascii(right(substring(nm,i,2),1));
IFrtn1>127THEN
IFi<length(nm)-1THEN
IF(ascii(right(substring(nm,i,3),1))>127andascii(right(substring(nm,i,4),1))>127)THEN
setsec=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
setsec=;
ENDIF;
ELSE
setsec=;
ENDIF;
ELSE
setsec=concat(char(rtn),char(rtn1));
ENDIF;
SETi=i+1;
ELSE
IFi<length(nm)-1THEN
IF(ascii(right(substring(nm,i,2),1))>127andascii(right(substring(nm,i,3),1))>127)THEN
setsec=concat(char(rtn),);
ELSE
setsec=char(rtn);
ENDIF;
ELSE
IF(ascii(right(substring(nm,i,2),1))>127andascii(right(substring(nm,i,3),1))>127)THEN
setsec=char(rtn);
ELSE
setsec=char(rtn,ascii(right(substring(nm,i,2),1)));
ENDIF;
ENDIF;

ENDIF;
setrtnstr=concat(rtnstr,sec);
SETi=i+1;

ENDWHILE;
RETURNrtnstr;
END$$
DELIMITER;$$
需要处理因此带来的更多的支持工作,这有可能会带来成本上的提高。在这种情况下,一些MySQL学习教程发行商可能倾向于选择别的开源数据库,例如遵循BSD授权的PostgreSQL。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-17 03:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表