Я пытаюсь заменить определенный текст другим текстом в PostgreSQL.
Чтобы быть более точным, я пытаюсь заменить путь к изображению и привязку href в article (таблица blog_posts) от относительного к абсолютному пути.У некоторых изображений и якорей уже есть абсолютный путь, который не должен мешать.
article
blog_posts
Я попытался выбрать записи, которые мне нужно изменить:
SELECT bp.id, bp.article, FROM blog_posts bp WHERE bp.article LIKE '%src=%"/fixed_word/%' OR bp.article LIKE '%src="/fixed_word/%' OR bp.article LIKE '%href="/fixed_word/%' OR bp.article LIKE '%href=%"/fixed_word/%'
Теперь я не уверен, как перейти к обновлению.Пожалуйста, помогите найти правильное решение.
Мои данные примерно такие:
MyTable : blog_posts
id article 1 any text <img any-atribute src="/fixed_word/variable_word1/something.png"/> any text 2 any text <a any-attribute href="/fixed_word/variable_word2/something2.png"><img src="/fixed_word/variable_word2/something2.png"/> </a>any text 3 any text <img src="https://mydomain.subdomain.com/fixed_word/variable_word1/something.png"/> any text 4 any text <img any-attribute src=\"/fixed_word/variable_word1/something.png"/> any text 5 any text <a any-attribute href=\"/fixed_word/variable_word2/something2.png"><img src=\"/fixed_word/variable_word2/something2.png"/> </a>any text 6 any text <img any-attribute src="https://mydomain.subdomain.com/fixed_word/variable_word6/something6.png"/> any text
OutPut должен быть:
id article 1 any text <img any-atribute src="https://mydomain.subdomain.com/fixed_word/variable_word1/something.png"/> any text 2 any text <a any-attribute href="https://mydomain.subdomain.com/fixed_word/variable_word2/something2.png"><img src="https://mydomain.subdomain.com/fixed_word/variable_word2/something2.png"/> </a>any text 3 any text <img src="https://mydomain.subdomain.com/fixed_word/variable_word1/something.png"/> any text 4 any text <img any-attribute src="https://mydomain.subdomain.com/fixed_wordvariable_word1/something.png"/> any text 5 any text <a any-attribute href="https://mydomain.subdomain.com/fixed_word/variable_word2/something2.png"> 6 any text <img any-attribute src="https://mydomain.subdomain.com/fixed_word/variable_word6/something6.png"/> any text
Это может быть отправной точкой:
UPDATE blog_posts SET article = regexp_replace( article, E'(src|href)=[^"]*"/fixed_word/([^"]*)', E'\\1="https://mydomain.subdomain.com/fixed_word/\\2', 'g' ) WHERE article ~ E'(src|href)=[^"]*"/fixed_word/([^"]*)';