2010-09-09 3 views
2

Я хочу удалить некоторые изгоев HTML из поля БД, которое должно содержать простое имя файла. Пример ОК поля:MySQL: Как удалить конечный HTML из поля в базе данных?

myfile.pdf 

Пример не в порядке поля:

myfile2.pdf<input type="hidden" id="gwProxy" />... 

Кто-нибудь знает запрос, я могу работать, что может удалить HTML часть, но оставить имя файла? то есть удалить все с первого символа < и далее.

Предположим, что поле называется myattachment и определено как varchar(250), а таблица называется mytable в базе данных MySQL.


информация Фон (не обязательно читать):

поле в нашей базе данных, как предполагается, однако, содержат имена файлов, из-за проблем (documented here) некоторые из полей теперь содержат имя файла и некоторые изгоев HTML. Мы исправили корень проблемы и теперь нужно исправить поврежденные поля. В прошлом я заменил текст, используя этот вид запроса:

UPDATE mytable SET myattachment = replace(myattachment, 'JPG', 'jpg') WHERE myattachment LIKE '%JPG'; 
+0

Сколько строк имеет таблица? Если не более 1 миллиона, я предлагаю извлечь id и myattachment в файл. Используйте текстовый редактор с регулярным выражением для замены и импорта столбца. – Yada

+0

Спасибо за ваше предложение. Я решил исправить проблему, используя PHP-скрипт, чтобы читать строки, исправлять повреждение и записывать их обратно. Но тогда я думал, что должен быть запрошенный MySQL запрос, который будет выполняться быстрее? – Tom

ответ

1

Этот запрос, кажется, работает нормально, может кто-нибудь увидеть какие-либо проблемы с ним?

UPDATE mytable 
    SET myattachment = SUBSTRING_INDEX(myattachment, '<', 1) 
WHERE `myattachment` LIKE '%<%'; 

Для Документов на SUBSTRING_INDEXmysql manual page см.

Смежные вопросы