我已经使用通配符搜索了各种MySQL查询,并替换了调用,但我找不到我要查找的内容。
由于Post Plugin中的Amazon产品升级,我需要更新整个网站的短代码。此字符串替换调用必须处理变量字符串:
在妈妈博客的WordPress数据库中:
我必须替换
[AMAZONPRODUCT=B0084IG8TM]
与
[amazon-element asin="B0084IG8TM" fields="title,sm-image,new-price,button"]
因此,调用必须标识基本字符串,然后标识10个字符的产品代码WHICH IS VARIABLE,并在方括号内包围该10个字符串的内容。
连连呢? 非常感谢你。
答案 0 :(得分:1)
您可以像这样获取子字符串(前提是它总是10个字符后跟]
):
select substring(right('[AMAZONPRODUCT=B0084IG8TM]', 11), 1, 10)
首先,它使用right()
拉出最后11个字符,然后使用substring()
然后,您可以将输出推送到concat()
调用以获取必要的字符串:
select concat('[amazon-element asin="', substring(right('[AMAZONPRODUCT=B0084IG8TM]', 11), 1, 10), '" fields="title,sm-image,new-price,button"]')
然后,您可以构建更新查询,如下所示:
update <your_table>
set your_field = concat('[amazon-element asin="', substring(right('[AMAZONPRODUCT=B0084IG8TM]', 11), 1, 10), '" fields="title,sm-image,new-price,button"]')
where your_field like '[AMAZONPRODUCT=%'
好的,所以它可以在字符串中的任何地方,只要它只是字符串中的ONCE,它仍然相对简单。如果它可以在字符串中不止一次,忘记使用查询执行它,并使用php脚本或其他东西。 (或多次运行更新,直到所有事件都发生更改)
update wp_posts
set post_content = concat(left(post_content, locate('[AMAZONPRODUCT=', post_content) -1), '[amazon-element asin="',substring(post_content, locate('[AMAZONPRODUCT=', post_content) + 15, 10), '" fields="title,sm-image,new-price,button"]', substring(post_content, locate('[AMAZONPRODUCT=', post_content) + 26))
where post_content like '%[AMAZONPRODUCT=%'