修改MySql中数据表和字段的字符集和排序规则

Posted 施情化忆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了修改MySql中数据表和字段的字符集和排序规则相关的知识,希望对你有一定的参考价值。

由于数据库中的数据表和表字段的字符集和排序规则不统一,找了很多帖子,最后发现如下脚本很好用。

用法儿是:先执行如下脚本生成修改数据表和表字段的脚本,然后再执行这些生成的脚本。

1. 修改指定数据库中所有varchar类型的表字段的字符集为UTF8,并将排序规则修改为utf8_general_ci

SELECT CONCAT(‘ALTER TABLE `‘, table_name, ‘` MODIFY `‘, column_name, ‘` ‘, DATA_TYPE, ‘(‘, CHARACTER_MAXIMUM_LENGTH, ‘) CHARACTER SET UTF8 COLLATE utf8_general_ci‘, (CASE WHEN IS_NULLABLE = ‘NO‘ THEN ‘ NOT NULL‘ ELSE ‘‘ END), ‘;‘)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = ‘databaseName‘
AND DATA_TYPE = ‘varchar‘
AND
(
    CHARACTER_SET_NAME != ‘utf8‘
    OR
    COLLATION_NAME != ‘utf8_general_ci‘
);

 

2. 修改指定数据库中所有数据表的字符集为UTF8,并将排序规则修改为utf8_general_ci
SELECT CONCAT(‘ALTER TABLE ‘, table_name, ‘ CONVERT TO CHARACTER SET  utf8 COLLATE utf8_unicode_ci;‘)
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = ‘databaseName‘

以上是关于修改MySql中数据表和字段的字符集和排序规则的主要内容,如果未能解决你的问题,请参考以下文章

修改mysql所有表排序规则

mysql汉字排序规则

mysql设置字段的排序规则对大小写敏感

Laravel 中正确字符和排序规则的 MySQL 设置

当我在Mysql存储Base64数据时,崩了!!

[MySQL] INFORMATION_SCHEMA 数据库包含所有表的字段