如何从特定 MySQL 数据库中的每个 table 名称中删除前缀名称

How to remove a prefix name from every table name in specific MySQL database

特定MySQL 数据库中的所有表,例如my_db,都以长度为17 个字符的前缀开头。我想从所有表的名称中删除前缀。我该怎么做?

我在 here 描述的语句中添加了 where table_schema = 'my_db' 以获取重命名 my_db 数据库中所有表的语句,而不是重命名 [=21] 中所有数据库的所有表=] 服务器实例:

select concat('RENAME TABLE ', concat(table_name, concat(' TO ', concat(substr(table_name, 18), ';')))) from information_schema.tables where table_schema = 'my_db';

注意前缀的长度是17,我在substr命令中使用了18

改进了 hasanghaforian 的回答... 删除了额外的 concat 函数.. 仍然产生相同的输出

select concat('RENAME TABLE ', table_name, ' TO ' , substr(table_name,18) , ' ; ' ) from information_schema.tables where table_schema = 'my_db';