Вы можете получить подстроку (при условии его всегда 10 символов, за которыми следует ]
), как это:
select substring(right('[AMAZONPRODUCT=B0084IG8TM]', 11), 1, 10)
Сначала он вытаскивает последние 11 символов с помощью right()
, а затем принимает первые 10 символов, которые используя 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=%'
demo here
это всегда начинаются с префикса '[AMAZONPRODUCT =]'? –
Итак, вы заменяете все, начиная с самого начала и заканчивая «=» с помощью «[amazon-element asin =», и вы заменяете все с конца на «]» на «» поля = «title, sm -изображение, новая цена, кнопка "] '? Да, это кажется выполнимым. – Strawberry