MySQL 中用 GKB 来让 UTF-8 字段中的中文按照拼音排序 Sat, Aug 16. 2008
UTF-8 中的中文不是按照拼音排序的,因此对于 使用 UTF-8 编码集的字段就无法按照拼音进行排序,最简单的解决方法就是转成 GBK 编码。
实例代码:
- SELECT *
- FROM `test`
- ORDER BY CONVERT( `test`.`name`
- USING GBK )
- LIMIT 0 , 30
数据库表结构:
- CREATE TABLE IF NOT EXISTS `test` (
- `id` int(3) NOT NULL AUTO_INCREMENT,
- `name` varchar(10) COLLATE utf8_bin NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
测试环境:Windows 2003 Standard Edition,MySQL 5.1.22-rc-community。
对于偶正在使用的 Symfony 框架,因为使用了 propel 做 ORM,比较难直接操作SQL,除非使用 RAW SQL,而且使用 RAW SQL会导致很多高级特性无法使用,解决方式:
- $criteria->addAscendingOrderByColumn('CONVERT(' . TestPeer::NAME . ' USING GBK)');
« previous page
(Page 1 of 1, totaling 1 entries)
next page »
