2013-02-09 62 views
0

我有一个有400k个帖子的mysql数据库。在大约10万个职位是图像。例如:删除/替换SQL数据库中的所有图像

text text text <img src="/images/test.jpg"> text text text 

必须删除完整图像字符串<img src="/images/test.jpg">。但它并不总是<img src/images/test.jpg">有很多变种。所以我不能使用典型的sql替换。

我需要的是“两个字符之间的sql替换”。对我来说,删除/替换"<img" and ">"之间的所有内容包括<img and >

这是否可以吗? 谢谢

+0

[?你尝试过什么(http://www.whathaveyoutried.com/)参见[问建议](http://stackoverflow.com/questions/ask-advice),请。 – 2013-02-09 22:28:18

+0

数据库部分不是重要部分。你真正在谈论的是解析HTML。看看http://htmlparsing.com/的想法。你不能只使用SQL来完成这项工作。 – 2013-02-09 22:30:49

+0

非常感谢您的快速回复。 100K条目是很多。我需要从数据库中删除完整的图像。我知道我可以用php替换它们,但是对于我来说,最好是直接删除数据库中的图像。 我有这样的事情 stackoverflow.com/questions/8850798/sql-replace-all-characters-between-two-strings 但没有成功尝试。 谢谢你的帮助。 – labu77 2013-02-09 22:39:05

回答

0

MySQL支持正则表达式:

UPDATE Mytable SET url = '' WHERE url RLIKE someregex; 

参见:http://dev.mysql.com/doc/refman/5.1/en/regexp.html

喜欢的东西:

UPDATE Mytable SET url = '' WHERE url RLIKE '\\<img.\\>' 

但要注意 MySQL不支持正则表达式错位的串输出。它只会比较。

不过,有一个MySQL用户功能REGEX_REPLACE,请参阅:https://launchpad.net/mysql-udf-regexp
另见这个问题:How to count words in MySQL/regular expression replacer?