删除名称包含'_nd'的列,重命名名称包含'_er'的列?

时间:2013-01-22 11:24:28

标签: mysql database-design alter-table

我在表格(50+)中有一大组列,其中包含有关游戏的一些统计信息。

我们正在简化统计数据,所以现在我们要做两件事。

  • 删除名称中包含'%_nd%'
  • 的所有列
  • 从任何列名中删除字符串'_er'。

是否有一种简单的方法可以自动执行此操作,还是需要手动输入所有列名称?

1 个答案:

答案 0 :(得分:2)

您可以通过运行以下内容并使用它生成的SQL来完成第一项操作:

select distinct concat('alter table ',table_name,' drop column ',column_name) someSql
from information_schema.columns
where column_name like '%_nd%'

你可以用类似的查询做第二个:

select distinct concat('alter table ',table_name,' change ',column_name, ' ', replace(column_name, '_er', ''), ' ', data_type, case when CHARACTER_MAXIMUM_LENGTH is not null then concat('(', CHARACTER_MAXIMUM_LENGTH, ')') end) someSql
from information_schema.columns
where column_name like '%_er%'