我正在尝试通过MyPhpAdmin运行替换查询并且它一直返回0结果,即使使用“搜索”选项卡,我得到306个结果。 有趣的是,我只是在另一个表上成功运行了相同的查询,但它确实有效。 这是查询
UPDATE `wp_postmeta`
SET `meta_value` = REPLACE(`meta_value`, '%jwp-test/%' , '')
WHERE `meta_value` LIKE '%jwp-test/%'
即使在搜索标签中:
SELECT *
FROM `wp_postmeta`
WHERE `meta_value` LIKE '%jwp-test/%'
显示306结果。 只是不要弄到我错的地方。 任何帮助表示感谢。
答案 0 :(得分:0)
REPLACE()
不支持通配符搜索(%),因此您需要使用REGEXP_REPLACE()
(MySQL 8.0)或更复杂的SQL语句。
假设你不想用NULL替换这个值,这样的东西应该可以工作:
UPDATE `wp_postmeta`
SET `meta_value` = CONCAT(
SUBSTR( `meta_value`, 1, LOCATE( 'jwp-test/', `meta_value` ) -1 ),
SUBSTR( `meta_value`, LOCATE( 'jwp-test/', `meta_value` ) +9 )
)
WHERE `meta_value` LIKE '%jwp-test/%'
答案 1 :(得分:0)
上床思考,阅读上面的评论,这很有效:
'author_email' => $curauth->user_email,
所以是的,它删除了替换的通配符,但将它们留在了哪里。