最近开发一个项目过程中遇到一个问题:对查询表输出的中文字符进行"DESC"与"ASC"排序。初步分析发现如果额外增加字段对现有的表进行批量获取各个中文字符首字母不太现实(表存储记录数量巨大),此项目用的是mysql数据库,于是想到了mysql的CONVERT方法,经过一番调试,终于搞定了php如何实现查询数据表按照中文首字母排序输出的问题了。现在分享给大家,仅供学习交流参考。

php如何实现查询数据表按照中文首字母排序输出示意图

1.php实现查询数据表按照中文首字母"DESC"顺序进行输出。

代码如下:
<?php

$map['status'] = 1;
$db            = D('Admin');
$ls = $db->where($map)->field('name')->order('CONVERT( name USING gbk ) DESC')->select();

?>


2.php实现查询数据表按照中文首字母"ASC"顺序进行输出。

<?php

$map['status'] = 1;
$db            = D('Admin');
$ls = $db->where($map)->field('name')->order('CONVERT( name USING gbk ) ASC')->select();

?>
总结:通过mysql的CONVERT()方法确实可以让php实现查询数据表按照中文首字母"ASC"或者"DESC"顺序进行排序输出,但是这样会影响查询速度,因为这个方法在查询中完成的,而不是对查询后的数据进行按照中文首字母排序的,这是这个方法的不足之处,欢迎高手分享更好的方法。