在MySQL中有一个名为"mytable“的表,我需要执行哪些sql命令才能从表的每一列的名称中删除前缀"example_”,而不会显式地逐个重命名所有列的名称?
发布于 2019-02-26 01:35:59
重申我的意见,您可以使用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发布于 2019-02-26 00:56:52
试试这段代码
`ALTER TABLE table_name
MODIFY COLUMN colname type,
MODIFY COLUMN colname type,
etc..,
etc..;`https://stackoverflow.com/questions/54871080
复制相似问题