2010-09-09 80 views
2

我想從應該包含簡單文件名的數據庫字段中刪除一些流氓HTML。 OK領域的例子:MySQL:如何從數據庫的字段中刪除尾隨的HTML?

myfile.pdf 

也不行字段示例:

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

有誰知道查詢我可以運行,可以刪除HTML部分,但留下的文件名?即從第一個<字符開始刪除所有內容。

讓我們假設該字段被稱爲myattachment並被定義爲varchar(250),並且該表在MySQL數據庫中被稱爲mytable


背景信息(沒有必要讀):

在我們的數據庫中的字段應該包含文件名然而,由於問題(documented here)某些字段現在包含一個文件名和一些流氓HTML。我們已經修復了根本問題,現在需要修復損壞的字段。在過去,我用這種查詢替換文本:

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

表格有多少行?如果不超過100萬,我建議將id和myattachment解壓縮到一個文件中。使用帶有正則表達式的文本編輯器進行替換並導入列。 – Yada 2010-09-09 17:48:19

+0

感謝您的建議。我曾考慮使用PHP腳本解決問題以讀取行,修復損壞並將其寫回。但後來我認爲必須有一個我可以運行的MySQL查詢會更快? – Tom 2010-09-09 17:56:19

回答

1

此查詢似乎工作正常,任何人都可以看到它的任何問題?

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

有關SUBSTRING_INDEX文檔看mysql manual page

相關問題