更改mysql表中的多个列名称

时间:2012-01-25 12:05:39

标签: mysql sql select alter

我的表中有很多列,名称以field_t开头,我必须将其更改为field_c

例如,以下是用于更改其中一列的名称的ALTER TABLE语句:

ALTER TABLE my_table CHANGE field_t_class field_c_class longtext;

如何更改此模式后面的所有列,而不是逐个更改?

2 个答案:

答案 0 :(得分:5)

您可以像这样生成ALTER

SELECT
    CONCAT(
           'ALTER TABLE ', C.TABLE_NAME, ' CHANGE ', 
           C.COLUMN_NAME, ' ', REPLACE(C.COLUMN_NAME, 'field_t', 'field_c')
           )
FROM
    INFORMATION_SCHEMA.COLUMNS C
WHERE
    C.COLUMN_NAME LIKE 'field[_]t[_]%';

您还需要附加DATA_TYPE等并基于此CHARACTER_MAXIMUM_LENGTH,
NUMERIC_PRECISION,NUMERIC_SCALE,CHARACTER_SET_NAME和COLLATION_NAME ...

答案 1 :(得分:1)

获取名称类似'field_t%'的第一列名称;

select C.COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS C            
WHERE
C.TABLE_NAME='YourTableName' AND C.COLUMN_NAME like 'field_t%';

然后创建重命名列名称的字符串,如:

将rename_string设为:

rename_string= "RENAME COL1 to ReCol1
     RENAME COL2 to ReCol2"

然后做:

ALTER Table YourTableName {rename_string};