Question

J'ai de nombreuses colonnes dans une table avec un nom commençant par field_t et je dois changer cela en champ

Par exemple, voici l'instruction ALTER TABLE pour changer le nom de l'une des colonnes:

ALTER TABLE my_table CHANGE field_t_class field_c_class longtext;

Comment puis-je changer toutes les colonnes qui suivent ce modèle au lieu de le faire en une seule base?

Était-ce utile?

La solution

Vous pouvez générer les alters comme celui-ci

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

Vous devrez également ajouter data_type, etc. et en fonction de ce caractères_maximum_length,
Numeric_Precision, Numeric_Scale, caractères_set_name et collation_name ...

Autres conseils

Obtenez des noms de 1ère colonne ayant un nom comme «field_t%»;

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

Ensuite, faites une chaîne de noms de colonne de changement de nom comme:

Faire renom_string comme:

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

Alors fais :

ALTER Table YourTableName {rename_string};
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top