Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从特定MySQL数据库中的每个表名中删除前缀名_Mysql_Database_Alter Table - Fatal编程技术网

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

如何从特定MySQL数据库中的每个表名中删除前缀名,mysql,database,alter-table,Mysql,Database,Alter Table,特定的MySQL数据库中的所有表,例如myu db,都以前缀开头,其长度为17字符。我想从所有表的名称中删除前缀。如何做到这一点?我在语句中添加了where table_schema='my_db',该语句用于获取用于重命名my_db数据库中所有表的语句,而不是重命名MySQL服务器实例中所有数据库的所有表: select concat('RENAME TABLE ', concat(table_name, concat(' TO ', concat(substr(table_name, 18)

特定的
MySQL
数据库中的所有表,例如
myu db
,都以前缀开头,其长度为
17
字符。我想从所有表的名称中删除前缀。如何做到这一点?

我在语句中添加了
where table_schema='my_db'
,该语句用于获取用于重命名
my_db
数据库中所有表的语句,而不是重命名MySQL服务器实例中所有数据库的所有表:

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

我在语句中添加了
where table_schema='my_db'
,该语句用于获取用于重命名
my_db
数据库中所有表的语句,不要重命名MySQL服务器实例中所有数据库的所有表:

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';

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

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