有时候我们需要对表的某个字段进行排序,比如标签 tag。如果 tag 包含中英文,那么就需要中英文混合排序。
排序目标是,英文就按首字母的 a,b,c 排,中文则按汉字的首字母排。
最简单的排序方法只需要一条 SQL 语句就可以完成:
01 |
mysql> select tag, COUNT (tag) from news GROUP BY tag order by convert (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 又如何呢?
01 |
mysql> select tag, COUNT (tag) from news GROUP BY tag order by convert (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量子计算机 靠后呢?这个在后面的章节会慢慢道来。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架