在MySQL中有一个名为“ mytable”的表,我可以执行哪些sql命令从表的每一列的名称中删除前缀“ example_”,而不必显式地重命名所有列的名称? / p>
答案 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..;`