0

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

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

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

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

4

1 回答 1

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%'
于 2013-01-22T11:35:38.747 回答