如何从MySQL中表的每一列的名称中删除前缀?

时间:2019-02-25 16:54:13

标签: mysql prefix alter-table renaming columnname

在MySQL中有一个名为“ mytable”的表,我可以执行哪些sql命令从表的每一列的名称中删除前缀“ example_”,而不必显式地重命名所有列的名称? / p>

2 个答案:

答案 0 :(得分:1)

要重申我的评论,可以使用INFORMATION_SCHEMA.COLUMNS来让MySQL为您构造查询。您仍然必须单独运行它,但是如果您要执行许多这些操作,它可以节省很多打字时间,并有助于确保您不会忽略某些内容(尽管也应谨慎检查结果)在使用它们以确保您的过滤条件不会最终导致不必要的变化之前。)

已经有一段时间了,因为我已经被要求做这样的事情,所以可能会有错别字或其他小的语法错误,但是它能使人们大致理解:

SELECT CONCAT('ALTER TABLE `', c.TABLE_NAME, '` '
    , GROUP_CONCAT(
         CONCAT('RENAME COLUMN `', c.COLUMN_NAME, '`'
            , ' TO '
            , '`', SUBSTRING(c.COLUMN_NAME, LEN('example_')), '`'
            ) 
         ORDER BY c.ORDINAL_POSITION)
    , ';'
   ) AS alterQuery
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_filtering_criteria
   AND c.COLUMN_NAME LIKE 'example_%'
   AND other_filtering_criteria
GROUP BY c.TABLE_NAME
ORDER BY c.TABLE_NAME

答案 1 :(得分:0)

尝试此代码

`ALTER TABLE table_name
MODIFY COLUMN colname type,
MODIFY COLUMN colname type,
etc..,
etc..;`