mysql 如何中文英文混合排序

使用这条语句order by convert(name using gbk) asc;
将中文和英文分别进行a-z排序。
比如: a 阿里 j 京东
排序结果:a j 阿里 京东

现在我想要结果:a 阿里 j 京东

怎么办

排序目标是,英文就按首字母的 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量子计算机 靠后呢?这个在后面的章节会慢慢道来。
温馨提示:内容为网友见解,仅供参考
无其他回答

mysql 如何中文英文混合排序
排序目标是,英文就按首字母的 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(ta...

MySQL Explain命令详解:type列详解及案例分析
7. ref_or_null ref_or_null与ref类似,但MySQL必须对包含NULL值的行进行额外搜索。8. fulltext 命中全文索引时,type为fulltext。9. ref 索引访问(有时也称为索引查找),返回所有匹配某个单个值的行。可能找到多个符合条件的行,故称为查找和扫描的混合体。此类索引访问只有当使用非唯一性索引或...

mysql的innodb和myisam的区别
MYISAM 表的索引存储方式最大的缺点没有按照物理数据行顺序存储,这样无论对主键的检索还是对二级索引的检索都需要进行二次排序。INNODB 表本身是索引组织表,也就是说索引就是数据。下图表T1的数据行以聚簇索引的方式展示,非叶子节点保存了主键的值,叶子节点保存了主键的值以及对应的数据行,并且每个...

如何实现简单的cobar
2. Cobar也支持将不同的表放入不同的库 3. 多数情况下,用户会将以上两种方式混合使用 这里需要强调的是,Cobar不支持将一张表,例如test表拆分成test_1, test_2, test_3...放在同一个库中,必须将拆分后的表分别放入不同的库来实现分布式。HA:在用户配置了MySQL心跳的情况下,Cobar可以自动向...

相似回答