MySQL 字符集:排序规则问题
在 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)
【???有啥用】