MySQL 8.0版本说明
MySQL 8.0源代码文档10bet官方网站
例1:德语变韵变的排序
假设这一列X
在表T
有这些latin1
列值:
消声器Müller MX系统MySQL
还假设使用以下语句检索列值:
从t中选择x,按x排序collation_name;
下表显示了如果我们使用命令
与不同的排序。
latin1_swedish_ci |
latin1_german1_ci |
latin1_german2_ci |
---|---|---|
消声器 | 消声器 | 穆勒 |
MX系统 | 穆勒 | 消声器 |
穆勒 | MX系统 | MX系统 |
MySQL | MySQL | MySQL |
在这个例子中,导致不同排序顺序的字符是U上面有两个点(u
),德国人称之为”U-umlaut。”
例2:搜索德语变韵变
假设你有三个表,它们的区别仅仅在于所使用的字符集和排序方式:
SET NAMES utf8;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;CREATE TABLE germanutf8 (c CHAR(10)) CHARACTER SET utf8 COLLATE utf8_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');
上述两种整理有一个一个=
平等,却没有这样的平等(latin1_german2_ci
).因此,你会在比较中得到以下结果:
SELECT * FROM german1 WHERE c = 'Bär';+------+ | c | +------+ | 酒吧| |酒吧 | +------+ mysql > SELECT * german2中c = '酒吧';+------+ | c | +------+ | 酒吧 | +------+ mysql > SELECT * germanutf8中c = '酒吧';+------+ | c | +------+ | Bar | | Bär | +------+
的排序属性造成的结果,而不是错误latin1_german1_ci
而且utf8_unicode_ci
(所示的排序是根据德国DIN 5007标准进行的)。