MySQL 可变数据查询
MySQL query with variable data
我用通配符搜索了各种 MySQL 查询,并替换了调用,但找不到我要找的确切内容。
由于 Post 插件中的亚马逊产品升级,我需要更新整个站点的短代码。此字符串替换调用必须处理可变字符串:
妈妈博客的 WordPress 数据库内:
我必须更换
[AMAZONPRODUCT=B0084IG8TM]
和
[amazon-element asin="B0084IG8TM" fields="title,sm-image,new-price,button"]
因此调用必须识别基本字符串,然后识别可变的 10 个字符的产品代码,并将内容围绕在方括号内的 10 个字符的字符串周围。
建议?
非常感谢。
您可以像这样获取您的子字符串(前提是它总是 10 个字符后跟 ]
):
select substring(right('[AMAZONPRODUCT=B0084IG8TM]', 11), 1, 10)
首先它使用 right()
取出最后 11 个字符,然后使用 substring()
取出前 10 个字符
然后您可以将输出推送到 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=%'
好吧,那么在字符串的任何地方都可以,只要在字符串中只有一次,还是比较简单的。如果它可以多次出现在字符串中,请忘记使用查询来完成它并使用 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=%'
我用通配符搜索了各种 MySQL 查询,并替换了调用,但找不到我要找的确切内容。
由于 Post 插件中的亚马逊产品升级,我需要更新整个站点的短代码。此字符串替换调用必须处理可变字符串:
妈妈博客的 WordPress 数据库内:
我必须更换
[AMAZONPRODUCT=B0084IG8TM]
和
[amazon-element asin="B0084IG8TM" fields="title,sm-image,new-price,button"]
因此调用必须识别基本字符串,然后识别可变的 10 个字符的产品代码,并将内容围绕在方括号内的 10 个字符的字符串周围。
建议? 非常感谢。
您可以像这样获取您的子字符串(前提是它总是 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=%'
好吧,那么在字符串的任何地方都可以,只要在字符串中只有一次,还是比较简单的。如果它可以多次出现在字符串中,请忘记使用查询来完成它并使用 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=%'