搜尋

首頁  >  問答  >  主體

mysql - 这样写替换表前缀的句子哪里有问题

Select CONCAT( 'ALTER TABLE ', table_name, ' RENAME TO jh_', substring(table_name,6 ),';' )FROM information_schema.tables Where table_name LIKE '33hao_%';

想把数据库名为jh中的表前缀为33hao_的换成前缀为jh_

执行上面的代码后ALTER 出很多句子,但在执行这些ALTER句子时出现错误,如下

[SQL]ALTER TABLE 33hao_activity RENAME TO jh__activity;
[Err] 1146 - Table 'jh.33hao_activity' doesn't exist

不知哪里写错了

大家讲道理大家讲道理2868 天前748

全部回覆(2)我來回復

  • 巴扎黑

    巴扎黑2017-04-17 14:58:54

    底線也是通配符,應該要做escape處理,否則把一些不是前綴為33hao_的表也包含了

    select ... from table_name nformation_schema.tables where table_name LIKE '33hao\_%'

    回覆
    0
  • PHPz

    PHPz2017-04-17 14:58:54

    是不是資料庫用錯了,jh這個資料庫真的有33hao_activity這個表嘛?

    回覆
    0
  • 取消回覆