首页 > 解决方案 > 更改包含某些字符的表的所有列

问题描述

在 MySQL 中,如何更改所有表的所有列名以从列名中删除字符串“_euro”?

我只是可以找到一种方法来搜索名称中包含一些包含“_euro”的列的表:

SELECT DISTINCT TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE "%_euro"
    AND TABLE_SCHEMA='my_database'

例如,对于名为price_total_euroI 的列,我想将其重命名为price_total

标签: mysqlsqlrename

解决方案


使用以下 SQL 创建脚本:

SELECT CONCAT("ALTER TABLE ",TABLE_SCHEMA,".",TABLE_NAME," RENAME COLUMN ",COLUMN_NAME," TO ",REPLACE(COLUMN_NAME,"_euro",""),"; ")
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE "%_euro"

输出将是多行,如下所示:

ALTER TABLE test.t1_euro RENAME COLUMN t1_euro TO t1;

查看脚本,并在您的数据库上执行它(在进行备份之后......)


推荐阅读