注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

红尘若梦

生活的色彩

 
 
 

日志

 
 

Mysql按中文字段排序( 按拼音首字母排序) 的SQL语句  

2015-12-02 09:34:37|  分类: 技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
经常有需要用到Mysql按字段排序,不过要按照中文拼音的顺序来排,那么普通的排序方法就不适用了,这种时候,可能就需要用到一些特殊的函数。
首先来说,如果字段的字符编码是默认的latin1_swedish_ci,那就用birary函数就好。

SELECT * FROM `site` ORDER BY BINARY(name) ASC;

这个估计大家都知道,那么有时候字符编码不是默认的,是gb2312,gbk,utf8的话,那么想要按拼音首字母排序就需要先对字段值做一个处理之后再排序。

SELECT name FROM `site` ORDER BY CONVERT(name USING gb2312) COLLATE gb2312_chinese_ci ASC;按gb2312编码集来,针对简体
SELECT name FROM `site` ORDER BY CONVERT(name USING big5) COLLATE big5_chinese_ci_chinese_ci ASC;按big5编码集来,针对繁体
SELECT name FROM `site` ORDER BY CONVERT(name USING gbk) COLLATE gbk_chinese_ci ASC;按gbk编码集来,针对简繁体
SELECT name FROM `site` ORDER BY CONVERT(name USING utf8) COLLATE utf8_general_ci ASC;按utf8编码集来,针对简繁体,日韩汉字

其实看了以上,大家也能够明白了,就是将相应的字段值转成指定的编码后再来统一排序,那么延伸一下,其实用其它国家字符集来排序也可以。
此外,不按字符集,如果要按自己编写的规则来排序,还是需要利用下FIND_IN_SET函数,具体实现请参看《Mysql字符串查找函数FIND_IN_SET的另类用法》。


  评论这张
 
阅读(90)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017