문제

I have many columns in a table with a name starting with field_t and I have to change that to field_c

For example, here is the ALTER TABLE statement for changing the name of one of the columns:

ALTER TABLE my_table CHANGE field_t_class field_c_class longtext;

How can I change all the columns that follow this pattern instead of doing it in a one by one basis?

도움이 되었습니까?

해결책

You can generated the ALTERs like this

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[_]%';

You'll also need to append DATA_TYPE etc and based on this CHARACTER_MAXIMUM_LENGTH,
NUMERIC_PRECISION, NUMERIC_SCALE, CHARACTER_SET_NAME and COLLATION_NAME...

다른 팁

Get 1st column names having name like 'field_t%';

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

Then make string of renaming column names like:

Make rename_string as:

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

Then do :

ALTER Table YourTableName {rename_string};
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top