荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: jjksam (I want to believe...), 信区: Linux
标 题: MySQL 中文字符串拼音顺序排序模块(转寄)
发信站: 荔园晨风BBS站 (Sun Oct 14 11:37:11 2001), 转信
【 以下文字转载自 jjksam 的信箱 】
【 原文由 jjksam@smth.org 所发表 】
发信人: newclear (clear), 信区: Linux
标 题: MySQL 中文字符串拼音顺序排序模块(转寄)
发信站: BBS 水木清华站 (Fri Oct 12 21:54:22 2001)
下载地址:
ftp://ftp.gnuchina.org/incoming/mysql_zh By NewClear/mysql_zh.tar.gz
MySQL 中文字符排序模块 (Not Support Win32)
--------------------------------------------------------------------------
mysql_zh:
mysql_zh是一个供MySQL使用的用户自定义函数,通过一个将中文字符串转换成一个
特殊的字符串,在MySQL的ISO-8859-1 ( Latin1 ) 字符集下进行中文字符串的排序
的一种实现方式。
由于MySQL默认情况下使用ISO-8859-1 ( Latin1 ) 字符集,在这个字符集下进行中
文排序的结果不是按照拼音顺序进行,使得在MySQL中进行中文排序比较麻烦,大致
有两种做法:简单一点的做法是将字段类型改为binary,但是这样英文查询的时候将
大小写敏感,使用起来非常不方便;再就是重新编译MySQL,使其使用GBK字符集。
这里给出的是第三种方式,通过一个外挂的MySQL自定义函数(UDF),实现中文的排序,
比之以上方法都要简单易用得多。
由于MySQL的Win32版本不支持UDF,所以本模块不支持Win32系统。
安装:
1. 将打包的文件解开到一个目录中
2. 运行make.sh重新编译模块
(如果不愿意编译,也可以直接使用压缩包中所带的mysql_zh.so文件)
./make.sh
3. 拷贝mysql_zh.so文件到ld命令寻找的目录中,建议使用"/usr/lib"。
cp mysql_zh.so /usr/lib
4. 进入MySQL安装UDF。
CREATE FUNCTION zh_int RETURNS INTEGER SONAME "mysql_zh.so";
CREATE FUNCTION zh_str RETURNS STRING SONAME "mysql_zh.so";
5. 重新启动MySQL。
/etc/rc.d/init.d/mysqld restart
(命令依系统环境可能有所不同)
使用:
zh_int(str):
返回与第一个参数对应的一个整数。
当参数为字符串时,
如果第一个字符为汉字,返回字符串第一个汉字在GBK字符集中按照拼音排
序的序号(序号最小值为256);
如果第一个字符不是汉字,返回第一个字符的ASCII码;
当参数为整数时,直接返回第一个参数;
当参数为浮点数时,将第一个参数取整后返回;
当参数为NULL时,返回NULL。
使用范例
SELECT * FROM table1 ORDER BY zh_int(col_with_chinese);
(只对字段col_with_chinese的第一个字符排序)
SELECT zh_int("中");
(返回"中"所对应的GBK排序序号)
SELECT zh_int(100);
(将直接返回100)
zh_str(str):
参数为一个字符串,可以为NULL,但不能为数值。
返回经处理过的中文字符串,使用处理过的字符串可以在ISO-8859-1(Latin1)
字符集下正确的进行中文的按拼音排序。
返回的字符串是不可读的,即使原字符串为英文也是一样。
使用范例
SELECT * FROM table1 ORDER BY zh_str(col_with_chinese);
(对字段col_with_chinese的按拼音顺序排序)
--------------------------------------------------------------------------
Copyright 2001 Steven Clear Peng
Steven Clear Peng <newclear@sina.com / newclear@smth.org>
October 12, 2001
--------------------------------------------------------------------------
--
以clear的名义,出来吧,哭蛹!
哇,整个世界清净了!
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.168.12]
--
※ 转载:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.175]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店