2012-01-25 12 views
2

私はfield_tで始まる名前のテーブルで多くの列を持っていると私はそれが例えばmysqlのテーブルに複数の列名を変更する

field_cするように変更する必要があり、ここでの名前を変更するためのALTER TABLE文があります

ALTER TABLE my_table CHANGE field_t_class field_c_class longtext; 

このパターンに続くすべての列を1つずつ変更する方法を教えてください。

答えて

4

あなたはこの

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

のように変更を生成することができます。また、...
NUMERIC_PRECISION、NUMERIC_SCALE、CHARACTER_SET_NAMEとCOLLATION_NAME、DATA_TYPEなどを追加し、このCHARACTER_MAXIMUM_LENGTHに基づいてする必要があります

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 COL1 to ReCol1 
    RENAME COL2 to ReCol2" 

ALTER Table YourTableName {rename_string}; 
+0

を私はALTERで、このためのサポートを見ることができないようrename_stringください

をテーブルhttp://dev.mysql.com/doc/refman/5.5/en/alter-table.htmlしかし、それが動作する場合は、データ型などがないので、私はより清潔です。 – gbn

+1

@gbn:はい、それは働いています。私は以前にマシン上でテストしたが、それ自体は答えを投稿した。 –

関連する問題