mysql中文拼音排序实现方法
发布:smiling 来源: PHP粉丝网 添加日期:2014-10-15 13:05:35 浏览: 评论:0
由于mysql对中文的支持不好,所以我们想要对中文进行按拼音排序也是一个不小不大的困难,今天我们利用convert函数来实现,不管什么编码都可以进行拼音进行排序,有需要的朋友参考一下.
对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary".
如果你使用源码编译MySQL,可以编译MySQL时使用 --with--charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了,默认的是latin1,也可以用 extra-charsets=gb2312,gbk来加入多个字符集.
如果不想对表结构进行修改或者重新编译MySQL,也可以在查询语句的 order by 部分使用 CONVERT 函数.
比如,代码如下:
select * from mytable order by CONVERT(chineseColumnName USING gbk);
UTF8 默认校对集是 utf8_general_ci,它不是按照中文来的,你需要强制让MySQL按中文来排序,代码如下:
- select * from core_vender_info order by convert(vender_abbrev USING gbk) COLLATE gbk_chinese_ci
实例,代码如下:
- create table `test111cnnet` (
- `bid` int(4) unsigned not null auto_increment,
- `namerean` varchar(20) character set gbk default null,
- primary key (`id`)
- ) ; --phpfensi.com
保存部份数据,代码如下:
- insert into `test1` (`id`, `namerean`) values('李');
- insert into `test1` (`id`, `namerean`) values('邓');
- insert into `test1` (`id`, `namerean`) values('站');
排序查询,代码如下:
- mysql>select namerean fromtest111cnnetorder by namerean;
- 邓(d)
- 李(l)
- 站(z)
这样看上去mysql中文排序是没有任问题,因为我们的namerean是gbk编码,所以结果是满意的,那么如果是uft-8就不行了,所以我们构造了一条,代码如下:
- select namerean from test111cnnet order by convert(namerean using gb2312) asc;
这样,不管当前字段为什么编码,他都能很好的按中文拼音进行排序.
Tags: mysql中文拼音 mysql拼音排序
相关文章
- ·MySQL中文转换成拼音的函数(2014-09-24)
- ·mysql中文按拼音字母排序sql(2014-10-05)
- ·MYSQL是UTF8中文汉字排序(按拼音)(2014-10-07)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)