10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 41.6 mb
PDF (A4)- 41.7 mb
手册页(TGZ)- 262.5 kb
手册页(邮政编码)- 372.6 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

10.8.6排序规则的作用举例

例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。

  • 的结果选择使用瑞典/芬兰语的排序规则,即U-umlaut与Y排序。

  • 的结果选择使用德国的DIN-1规则,该规则表示U-umlaut与U。

  • 的结果选择使用德国的DIN-2规则,即U-umlaut与UE排序。

例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标准进行的)。