重命名多个MySQL表的前缀

时间:2019-06-27 08:51:48

标签: mysql

我正在寻找解决方案,发现了一些看似有希望的东西(我将其粘贴在phpmyadmin的SQL选项卡中):

SELECT Concat('RENAME TABLE ', TABLE_NAME, ' TO toersten_', TABLE_NAME, ';') 
FROM information_schema.tables
WHERE table_name like 'jos_%'
and table_schema='mydb_test_toersten'

但是它不起作用。不是错误,但是前缀似乎也放在了错误的位置。执行后的结果如下:

RENAME TABLE jos_virtuemart_coupons TO toersten_jos_virtuemart_coupons;

这就是我想发生的事情:

所有带有前缀“ jos_”的表都需要重命名为“ toersten_” 因此,表“ jos_myexample_table”将变为“ toersten_myexample_table”

这需要在很多表上完成。所以我不能手动输入所有表名。

1 个答案:

答案 0 :(得分:1)

您可以使用Substring_Index()函数来获取jos_之后的子字符串。 -1 表示您将在jos_之后提取右侧的子字符串:

SELECT Concat('RENAME TABLE ', 
              TABLE_NAME, 
              ' TO toersten_', 
              SUBSTRING_INDEX(TABLE_NAME, 'jos_',-1), 
              ';') 
FROM information_schema.tables
WHERE table_name like 'jos_%'
and table_schema='mydb_test_toersten'
相关问题