大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如果字段是gbk字符集的直接order by
创新互联专注于西湖企业网站建设,响应式网站开发,商城开发。西湖网站建设公司,为西湖等地区提供建站服务。全流程按需网站建设,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
如果是UTF-8字符集,查询的时候,通过convert函数,把查询出来的数据使用的字符集gb2312编码就可以了,然后使用convert之后的中文排序。
如:select name from test1 order by convert(name using gb2312) asc;
排序目标是,英文就按首字母的 a,b,c 排,中文则按汉字的首字母排。
最简单的排序方法只需要一条 SQL 语句就可以完成:
01 mysql select tag, COUNT(tag) from news GROUP BY tag order byconvert(tag using gbk) collate gbk_chinese_ci;
02 +-----------------+-----------------+
03 | tag | COUNT(tag) |
04 +-----------------+-----------------+
05 | .Net | 3 |
06 | 10000小时 | 1 |
07 | Amazon | 9 |
08 | android | 57 |
09 | C语言 | 1 |
10 | Dennis Ritchie | 2 |
11 | Go语言 | 5 |
12 | IT见解 | 146 |
13 | JavaScript | 4 |
14 | John McCarthy | 1 |
15 | JQuery | 7 |
16 | Zynga | 1 |
17 | 阿里巴巴 | 28 |
18 | 贝尔实验室 | 1 |
19 | 互联网 | 24 |
20 | 简明现代魔法 | 1 |
21 | 淘宝网 | 2 |
22 | 信息图 | 1 |
23 | 余额宝 | 11 |
24 | 支付宝 | 14 |
25 | 植物大战僵尸 | 4 |
26 | 自媒体 | 3 |
27 +-----------------+-----------------+
上面是按 gbk 字符集排序的,那么如果按 utf8 又如何呢?
view sourceprint?
01 mysql select tag, COUNT(tag) from news GROUP BY tag order byconvert(tag using utf8) collate utf8_unicode_ci;
02 +-----------------+-----------------+
03 | tag | COUNT(tag) |
04 +-----------------+-----------------+
05 | .Net | 3 |
06 | 10000小时 | 1 |
07 | 12306 | 1 |
08 | C语言 | 1 |
09 | IT见解 | 146 |
10 | Quora | 4 |
11 | Twitch | 1 |
12 | Twitter | 19 |
13 | Zynga | 1 |
14 | 三星 | 3 |
15 | 专利 | 1 |
16 | 余额宝 | 11 |
17 | 开曼群岛 | 1 |
18 | 意志力 | 1 |
19 | 植物大战僵尸 | 4 |
20 | 注意力经济 | 1 |
21 | 简明现代魔法 | 1 |
22 | 诺基亚 | 12 |
23 | 诺贝尔奖 | 1 |
24 | 豆瓣 | 3 |
25 | 贝佐斯 | 1 |
26 | 贝尔实验室 | 1 |
27 | 轻博客 | 3 |
28 | 运营 | 1 |
29 | 量子计算机 | 1 |
30 | 黑莓 | 1 |
31 +-----------------+-----------------+
PS:ci是 case insensitive, 即 “大小写不敏感”, a 和 A 会在字符判断中会被当做一样的。
数字和引文排序是没问题,但为什么 H黑莓 会比 L量子计算机 靠后呢?这个在后面的章节会慢慢道来。
文本内容的排序其实是按照字符在字符的字典序的,相当于是先是数字,然后是英文字母,英文字母按照a-z的字典序。
对于中文,也是按照字典序排序的,这个汉字字典序可以看作是对应拼音的字典序,其实内部是按照字符集中汉字编码的从小到大顺序,只不过汉字的编码顺序是以拼音的字典序排列的,与拼音字典序的主要不同体现在多音字上,对于一个汉字虽然可以有多个发音,但只有一个内部编码
SELECT name FROM `user` ORDER BY CONVERT( name USING gbk ) ASC
直接就是按汉字首个字的首字母排序,自动都会分组了啊。
按姓氏笔画排序无须特别设置,是按汉字姓氏字符的ASCII码值排序的。
按姓氏笔画排序,则需单独建立一个字段,自己输入姓氏的总笔画数来供排序用。
order by (字段名) 应该可以吧
或者把字段的属性设置成binary再试试
如果还是不行 我是没什么好的主意了 答案补充 其实 select * from 表名 order by name asc 就应该可以了
如果不行试试 select * from 表名 order by binary name asc 答案补充 其中 name 为对应的字段名