一、修改所有表中的varchar和char字段以及排序集(dataBaseName修改为库名)
SELECT
CONCAT(
'ALTER TABLE `',
TABLE_NAME,
'` MODIFY `',
COLUMN_NAME,
'` ',
DATA_TYPE,
'(',
CHARACTER_MAXIMUM_LENGTH,
') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci',
(
CASE
WHEN IS_NULLABLE = 'NO' THEN
' NOT NULL'
ELSE
''
END
),
';'
)
FROM
information_schema. COLUMNS
WHERE
TABLE_SCHEMA = 'dataBaseName'
AND (DATA_TYPE = 'varchar' OR DATA_TYPE = 'char')
注:修改后关于已添加的字符串类型的注释将会消失,需要重新添加
二、修改所有表的编码及排序集(dataBaseName修改为库名)
SELECT
CONCAT(
'ALTER TABLE ',
TABLE_NAME,
' CONVERT TO CHARACTER SET utf8mb4;'
)
FROM
information_schema. TABLES
WHERE
TABLE_SCHEMA = 'dataBaseName';
该博客提供了两个MySQL查询语句,用于批量修改数据库中所有表的varchar和char字段的字符集为utf8mb4,并调整排序集。同时,也展示了如何批量转换所有表的编码和排序集。注意,此操作会导致原有字符串类型的注释丢失,需要后续手动恢复。
2万+

被折叠的 条评论
为什么被折叠?



