MySQL中英文混合排序最简单的办法
来源:http://www.nowamagic.net/academy/detail/32161508
有时候我们需要对表的某个字段进行排序,比如标签 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量子计算机 靠后呢?这个在后面的章节会慢慢道来。
MySQL中英文混合排序最简单的办法相关推荐
- Mysql 中英文混合排序
找了一下国内和国外网站,都没有很好的解决方案. 大概的几个建议: 一. 最简单的排序方法 最简单的排序方法只需要一条 SQL语句: select * from musician_ordered ord ...
- java中英文汉语混合排序,Android实现列表数据按名称排序、中英文混合排序
Android实现列表数据按名称排序.中英文混合排序 发布时间:2020-09-16 00:58:10 来源:脚本之家 阅读:110 作者:God丶David 有时候我们需要多列表中的数据进行特定的排 ...
- List中英文混合排序
上一篇写了list汉语拼音排序:汉语拼音排序 对排序规则稍加修改即可实现中英文混合排序 /** * 功能:定义排序规则,实现中英文混合排序 * */ public class ComparatorHa ...
- 中文、英文和中英文混合排序
对Search进行排序 SearchComparator.java中的实现方法compare已不能满足需要 其中涉及到中文.英文或者中英文混合排序,所以,这里使用开源的Pingyin 对起排序 Sea ...
- 一个关于nvarchar字段排序,中英文混合排序的问题
有一个nvachar字段,里面有很多中英文混合的纪录 当按照这个字段排序的时候,无法按照英文a-z.中文的顺序排列 晴问如何解? 另外如何设置排序规则 你看看现在是什么排序规则? select SE ...
- [简易]中英文混合排序
代码,(说明略,看注释) package utils;import java.io.UnsupportedEncodingException; import java.util.ArrayList; ...
- Android按名称排序,中英文混合排序
有时候我们需要多列表中的数据进行特定的排序,最近项目中用到的是按名称排序,所以简单来说一下: 效果图: 排序方法: Collections.sort(students, new SortChinese ...
- java中英文混合排序_Java编程实现中英混合字符串数组按首字母排序的方法
本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法.分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷 ...
- java中英文汉语混合排序_Android实现列表数据按名称排序、中英文混合排序
有时候我们需要多列表中的数据进行特定的排序,最近项目中用到的是按名称排序,所以简单来说一下: 效果图: 排序方法: Collections.sort(students, new SortChinese ...
最新文章
- Linux查看文件内容的5种方式
- tomcat及负载均衡
- 共空间模式 Common Spatial Pattern(CSP)原理和实战
- mysql安装后第一次操作_MySQL数据库之mysql 安装成功以及第一次安装成功初始化密码操作...
- Vuejs报错error: Unexpected console statement (no-console) at src\... 解决办法
- java获取json中的某个值_接口测试之json中的key获取
- ubuntu下安装java和tomcat安装
- 第12天学习Java的笔记(数组小练习,数组与方法)
- python3中异常处理_python中的五种异常处理机制介绍|python3教程|python入门|python教程...
- 数据科学家教你用数据模型来泡妞
- 万春 读《Orange’S 一个操作系统的实现》有感
- 多表连接的三种方式 HASH MERGE NESTED
- 怎么打散铺铜_怎么做绵软香甜的黑米糕,不加酵母,加鸡蛋和一碗黑米粉一搅拌...
- 17082 两个有序数序列中找第k小(优先做)
- android nfc贴卡多次读写,Android Studio NFC 读写卡程序 (二)(示例代码)
- 利用Bitvise等软件通过SSH登录linux系统的心得
- php机器人聊天对话框,PHP实现QQ聊天机器人
- Ubuntu各版本代号
- catia二次开发:人机交互select,start command
- 短信网关协议(cmpp、sgip、smgp、smpp)长短信开发要点
热门文章
- 无法枚举容器内对象 访问被拒绝?
- unity3D萌新知识
- ZZULIOJ 1057素数的判定
- 小猪的Python学习之旅 —— 20.抓取Gank.io所有数据存储到MySQL中
- 口算练习题(模拟算法)
- hive获取今天/明天/昨天时间
- cnbloger: 范振勇, 虚拟机上安装centos8.0[(vmware-15-pro)]
- PHP基础学习第二课(HTML表格)的详细解说和制作
- 闭包和闭包下的单利模式
- 这款Roguelike+RPG养成游戏为何如此成功?《弓箭传说》节奏点分析