数据库整理的重点是确定如何排序和比较数据。
字符串比较区分大小写
SELECt "New York" = "NEW YORK";`
对于不区分大小写的排序规则,将返回true;对于区分大小写的人为假。
排序规则名称中的
_ci和
_cs后缀可以指示哪个排序规则。
_bin归类进行二进制比较(字符串必须100%相同)。
变音/重音符号的比较
排序规则还确定在字符串比较中是否将重音字符视为其拉丁文基本对等物。
SELECT "Düsseldorf" = "Dusseldorf";SELECT "Èclair" = "Eclair";
在前一种情况下将返回true;在后者中是错误的。您将需要阅读每个排序规则的描述以找出哪个是哪个。
字符串排序
排序规则会影响字符串的排序方式。
例如,
芬兰语
Ä Ö Ü
/瑞典语字母中的字母结尾latin1_swedish_ci
它们按照
A O U
德国DIN-1分类(latin_german1_ci
)处理并按照
AE OE UE
德国DIN-2分类(latin_german2_ci
)。(“电话簿”排序)在中
latin1_spanish_ci
,“ñ”(n-波浪号)是“ n”和“ o”之间的单独字母。
当使用非拉丁字符时,这些规则将导致不同的排序顺序。
在运行时使用归类
您必须为表和列选择排序规则,但是如果您不介意性能下降,则可以在运行时使用
COLLATE关键字将数据库操作强制为某种排序规则。
这将使用德国DIN-2排序规则
table按
name列进行排序:
SELECT nameFROM tableORDER BY name COLLATE latin1_german2_ci;
COLLATE在运行时使用会影响性能,因为在查询过程中必须转换每一列。因此,在应用大型数据集之前,请三思而后行。
MySQL参考:
- MySQL支持的字符集和排序规则
- 整理效果的示例
- 整理问题



