“MySQL 字符集:排序规则问题”的版本间差异
跳到导航
跳到搜索
第66行: | 第66行: | ||
for CHARACTER SET 'latin1' | for CHARACTER SET 'latin1' | ||
</syntaxhighlight> | </syntaxhighlight> | ||
【废话……】 | |||
== 表达式中的排序规则强制性 == | == 表达式中的排序规则强制性 == |
2021年3月28日 (日) 05:26的版本
在 SQL 语句中使用“COLLATE”
使用“COLLATE”子句,您可以覆盖默认的默认排序规则以进行比较。“COLLATE”可用于 SQL 语句的各个部分。这里有些例子:
- 使用“ORDER BY”:【对中文排序呢???拼音升降序使用什么排序规则???】
SELECT k FROM t1 ORDER BY k COLLATE latin1_german2_ci;'''
- 使用“AS”:
SELECT k COLLATE latin1_german2_ci AS k1 FROM t1 ORDER BY k1;
- 使用“GROUP BY”:
SELECT k FROM t1 GROUP BY k COLLATE latin1_german2_ci;
- 具有聚合功能:
SELECT MAX(k COLLATE latin1_german2_ci) FROM t1;
- 使用“DISTINCT”:
SELECT DISTINCT k COLLATE latin1_german2_ci FROM t1;
- 使用“WHERE”:
SELECT * FROM t1 WHERE _latin1 'Müller' COLLATE latin1_german2_ci = k;
SELECT * FROM t1 WHERE k LIKE _latin1 'Müller' COLLATE latin1_german2_ci;
- 使用“HAVING”:
SELECT k FROM t1 GROUP BY k HAVING k = _latin1 'Müller' COLLATE latin1_german2_ci;
“COLLATE”子句优先级
COLLATE子句具有较高的优先级(高于“||”),因此以下两个表达式是等效的:
x || y COLLATE z
x || (y COLLATE z)
【???有啥用】
字符集和排序规则兼容性
每个字符集都有一个或多个排序规则,但是每个排序规则都与一个且只有一个字符集相关联。因此,以下语句会导致错误消息,因为 latin2_bin 排序规则与 latin1 字符集不合法:
mysql> SELECT _latin1 'x' COLLATE latin2_bin;
ERROR 1253 (42000): COLLATION 'latin2_bin' is not valid
for CHARACTER SET 'latin1'
【废话……】