2013-01-22 60 views
0

我在一個表格(50+)中有大量的列,其中包含一些有關遊戲的統計信息。刪除名稱包含'_nd'的列,重命名其中名稱包含'_er'的列?

我們正在簡化我們的統計,所以現在我們要做兩件事。

  • 下降,其中名稱中包含任何列「%_ND%」
  • 刪除任何列名字符串「_er」。

是否有一種簡單的方法來自動執行此操作,還是需要手動輸入所有列名稱?

回答

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%'