示例 1:对德语变音符号进行排序
假设表中的列X
具有
T
这些latin1
列值:
Muffler
Müller
MX Systems
MySQL
还假设使用以下语句检索列值:
SELECT X FROM T ORDER BY X COLLATE collation_name;
下表显示了使用ORDER BY
不同排序规则时值的结果顺序。
latin1_swedish_ci |
latin1_german1_ci |
latin1_german2_ci |
---|---|---|
围巾 | 围巾 | 米勒 |
MX系统 | 米勒 | 围巾 |
米勒 | MX系统 | MX系统 |
MySQL | MySQL | MySQL |
导致此示例中不同排序顺序的字符是ü
(德语
“ U-umlaut ”)。
示例 2:搜索德语变音符号
假设您有三个表,它们仅在使用的字符集和排序规则方面有所不同:
mysql> SET NAMES utf8mb4;
mysql> CREATE TABLE german1 (
c CHAR(10)
) CHARACTER SET latin1 COLLATE latin1_german1_ci;
mysql> CREATE TABLE german2 (
c CHAR(10)
) CHARACTER SET latin1 COLLATE latin1_german2_ci;
mysql> CREATE TABLE germanutf8 (
c CHAR(10)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
每个表包含两条记录:
mysql> INSERT INTO german1 VALUES ('Bar'), ('Bär');
mysql> INSERT INTO german2 VALUES ('Bar'), ('Bär');
mysql> INSERT INTO germanutf8 VALUES ('Bar'), ('Bär');
上述归类中有两个具有A = Ä
相等性,一个没有这样的相等性 ( latin1_german2_ci
)。因此,比较会产生此处显示的结果:
mysql> SELECT * FROM german1 WHERE c = 'Bär';
+------+
| c |
+------+
| Bar |
| Bär |
+------+
mysql> SELECT * FROM german2 WHERE c = 'Bär';
+------+
| c |
+------+
| Bär |
+------+
mysql> SELECT * FROM germanutf8 WHERE c = 'Bär';
+------+
| c |
+------+
| Bar |
| Bär |
+------+
这不是错误,而是 和 的排序属性的结果latin1_german1_ci
(
utf8mb4_unicode_ci
显示的排序是根据德国 DIN 5007 标准完成的)。