gpt4 book ai didi

mysql - 如何仅更改现有表的排序规则而不更改字符集?

转载 作者:行者123 更新时间:2023-11-29 11:02:05 25 4
gpt4 key购买 nike

这个问题是关于现有表的。更改数据库的默认值已得到很好的介绍。

Stack Overflow 上的大多数问题似乎都假设您想要更改字符集和排序规则 - 例如从 latin1_general_ci 更改为 utf8_spanish_ci。答案通常建议:

ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;

当字符集不变时,这似乎是一种浪费 - 只需更新排序规则 - 但也许 MySQL 足够聪明,所以它发现字符集是相同的并且没有浪费资源?

问题变成:如果仅更改排序规则,那么为现有表(及其列)更新排序规则的建议过程是什么?

最佳答案

我认为答案是:

对于每个表,执行

ALTER TABLE <table_name> COLLATE utf8_spanish_ci;

对于每一列,执行

ALTER TABLE <table_name> MODIFY <column_name> <column_type> COLLATE utf8_spanish_ci;

您可以使用 information_schema 数据库生成要运行的 SQL - 仅针对所需的表

SELECT concat('ALTER TABLE `', TABLE_SCHEMA, '`.`', table_name, '` COLLATE utf8_spanish_ci;') 
from information_schema.tables
where TABLE_SCHEMA like 'database_name' and TABLE_COLLATION = 'utf8_general_ci';

和列

SELECT concat('ALTER TABLE `', TABLE_SCHEMA, '`.`', table_name, '` MODIFY `', column_name, '` ', COLUMN_TYPE, ' COLLATE utf8_spanish_ci;') 
from information_schema.columns
where TABLE_SCHEMA like 'database_name' and COLLATION_NAME = 'utf8_general_ci';

关于mysql - 如何仅更改现有表的排序规则而不更改字符集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42059100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com