Обработка, подобная этой, не должна выполняться в базе данных. Я бы порекомендовал создать отдельное поле, содержащее только текстовое содержимое.
В ответ на комментарий поклонников @Nissan: извлечение текста из HTML не является задачей IMO базы данных. Это слишком сложная работа для нее, и в ней слишком много переменных. Я не очень хорошо разбираюсь в чтении хранимых процедур, но если я правильно прочитал код, у него будут проблемы с (недопустимым, но все еще часто встречающимся) незакодированным <
в исходном коде. И он, скорее всего, сломается из-за неверного HTML.
Или представьте себе, что однажды клиент приходит и хочет индексировать свойства img
elements 'ALT
. Или title
с. Начните строить это с помощью алгоритма «начальная позиция, конечная позиция». Вы будете сумасшедшим .
Я говорю, что если это необходимо для повседневной обработки HTML из разных источников, находящихся вне вашего контроля, оставьте это для слоя над БД, который лучше подготовлен для обработки этого материала. Подход, основанный на DOM - возможно, использующий BeautifulSoup для работы с недопустимым HTML - разбор всех nodeValue
будет наиболее надежным.
Может быть, это излишне, и хранимая процедура будет отлично работать в случае с OP - похоже, это из его комментария, и это совершенно нормально. Я просто говорю, что если вы не можете контролировать входящий HTML, не лишайте HTML ограниченных средств, предлагаемых базой данных для работы.