KingbaseES V8R6运维案例之MySQL和KingbaseES字符串排序规则对比
案例说明:
相同数据排序后查询,在MySQL和KingbaseES下得到的排序顺序不一致,本案例从MySQL和KingbaseES的排序规则分析,两种数据库排序的异同点。
适用版本:
KingbaseES V8R6、MySQL 8.0
一、MySQL的排序规则
1、排序规则(collation)
排序规则是依赖于字符集,字符集是用来定义MySQL存储不同字符的方式,而排序规则一般指对字符集中字符串之间的比较、排序制定的规则。一种字符集可以对应多种排序规则,但是一种排序规则只能对应指定的一种字符集,两个不同的字符集不能有相同的排序规则。
上图中,Collation 列表示排序方式,Charset 列表示字符集,可以看出 utf8 字符集对应着许多的排序方式,排序方式那一列每一项的值都不一样,并且每一项都对应唯一一种字符集,在这里是 utf8 字符集。
2、默认排序规则(字符集的默认排序规则)
每种字符集都有一个默认的排序规则, 可以通过下面的SQL语句查询指定字符集的默认排序规则:
mysql> show character set like 'utf8%';
+---------+---------------+--------------------+--------+
| Charset | Description | Default collation | Maxlen |
+---------+---------------+--------------------+--------+
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 |
+---------+---------------+--------------------+--------+
2 rows in set (0.00 sec)