如何查看mysql表和列的排序规则
请记住,表上使用的排序规则可能与各个列上使用的排序规则不同。
以下查询将返回在给定数据库中找到的所有列的排序规则,这对较小的数据库很有用:
select table_name, column_name, collation_name, character_set_name from information_schema.columns where table_schema = 'database_name';
要从特定表返回列排序规则:
select table_name, column_name, collation_name, character_set_name from information_schema.columns where table_name = 'table_name';
查看排序规则
select table_schema, table_name, table_collation from information_schema.tables where table_schema = 'database_name';
更改表的排序规则
确保数据库的默认排序规则正确:
alter database database_name default collate utf8mb4_0900_ai_ci;
我们还应该确保 MySQL 表列使用正确的排序规则。
如果需要更改表及其列的排序规则,可以使用以下查询:
alter table table_name convert to character set utf8mb4 collate utf8mb4_0900_ai_ci;
还要记住,MySQL 会自行解决一些差异,但我们自己明确定义排序规则仍然是一个好主意。
字符集和排序规则
请记住,字符集是一组符号和编码; utf8mb4 允许最多 4 个字节的字符长度,这比 utf8 多。
排序规则与执行查询时如何比较字符有关。
我们应该仔细选择适合我们应用程序需求的排序规则,utf8mb4_0900_ai_ci 不区分重音和大小写,因此如果我们需要进行精确比较,我们可能应该改用 utf8mb4_0900_as_cs。
口音与字符有关,例如:éúüó;例如,如果使用不区分重音的排序规则,“e”和“é”将被视为相同。
当使用不区分大小写的排序规则时,同样使用“e”和“E”。
应用程序可以从将 unicode 用于国际化目的中受益; utf8mb4 为不同的字符、表情符号和符号提供广泛的支持,推荐使用普通的旧 utf8.
Mysql报错:
... Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (latin1_general_ci,IMPLICIT) for operation ...
当 MySQL 尝试比较两个不同排序规则的字符串时,可能会发生错误;用于数据库连接本身的排序规则也可能与此错误有关。
我们可以使用以下查询为当前连接设置数据库字符集和排序规则:
set names utf8mb4 collate utf8mb4_0900_ai_ci;
utf8mb4_0900_ai_ci 比 utf8mb4_general_ci 新。
如果我们需要进行重音和区分大小写的比较,请改用 utf8mb4_0900_as_cs。
日期:2020-06-02 22:17:06 来源:oir作者:oir