PostgreSQL. Удалить текст начинающийся с одной строки, но имеющий различия в дальнейшем
В таблице есть колонка с описанием. Нужно убрать из этого описания последний блок текста. Этот блок всегда начинается с одной и той же строчки но в дальнейшем имеет различия.
Задача удалить этот блок во всей таблице не затронув текст который идет до него.
Пробовал реплейсом
UPDATE
category
SET
description = REPLACE (
description,
'<h2>Текст с которого начинается блок%',
''
)
where description like '%<h2>Текст с которого начинается блок%'
Реплейс не окозазал эффекта, прсле применения запись продолжает находиться.
Пробовал составить регулярное выражение, но sql имеет свой диалект.
Известен метод которым можно выполнить такую операцию, или подходящая регулярка?
Ответы (1 шт):
Реплейс не окозазал эффекта
И не окажет, так как в строке, по всей видимости, нет знака %, REPLACE "заменяет все вхождения в string подстроки from подстрокой to". См. документацию.
Используйте REGEXP_REPLACE:
REGEXP_REPLACE (description, '<h2>Текст с которого начинается блок.*', '')
Тут <h2>Текст с которого начинается блок – буквальный текст, а .* найдёт ноль и более любых символов.