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

问题描述 投票:1回答:2

在MySQL中有一个名为“mytable”的表,我执行哪些sql命令从表的每一列的名称中删除前缀“example_”,而不是逐一重命名所有列名?

mysql prefix alter-table renaming columnname
2个回答
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

0
投票

试试这段代码

`ALTER TABLE table_name
MODIFY COLUMN colname type,
MODIFY COLUMN colname type,
etc..,
etc..;`
© www.soinside.com 2019 - 2024. All rights reserved.