mysql通配符(忽略搜索中的一个/两个字符)

时间:2010-01-23 03:58:21

标签: sql mysql wordpress

我正在尝试更新wordpress mu数据库中的表格。我想更新所有wp_options表。这些表的名称如下:

  • wp_1_options
  • wp_2_options
  • ......等等。

如何使用wp_any-character-here_options影响所有表?我试图查询:

UPDATE wp_%_options 
   SET option_value = replace(option_value, 'http://www.old-domain.com', 'http://www.new-domain.com') 
 WHERE option_name = 'home' OR option_name = 'siteurl';

...但是mysql抱怨我的语法错误......

1 个答案:

答案 0 :(得分:0)

您不能使用通配符UPDATE语句 - 您必须为每个表编写UPDATE语句。

未测试:

CREATE PROCEDURE cleanup()
BEGIN

  DECLARE i INT DEFAULT 1;

  PREPARE stmt FROM "UPDATE ? 
                        SET option_value = REPLACE(option_value, 'http://www.old-domain.com', 'http://www.new-domain.com') 
                      WHERE option_name IN ('home', 'siteurl')"

  WHILE i <= 10
    EXECUTE stmt USING CONCAT('wp_', i, '_options');

    SET i = i + 1;
  END WHILE;

  DEALLOCATE PREPARE stmt;

END;