mysql表在名为“body”的字段中包含超过74000个条目。
我需要一个只包含包含HTML标记的行的视图。
示例:
记录1 =>
Lorem ipsum dolor sit amet, <a href="http://foo.bar">consetetur</a> sadipscing elitr\n
sed diam nonumy eirmod temporary invidunt ut labore et dolore\n
<hr>
aliquyam magna erat, sed diam voluptua.
记录2 =&gt;
At vero eos et <strong>accusam</strong> et justo duo dolores et ea rebum.\n
Stet clita kasd gubergren, No sea takimata sanctus est Lorem\n
ipsum dolor sit amet.
记录= 3&gt;
Lorem ipsum dolor sit amet, consetetur sadipscing elitr\n
<ul><li>sed</li> <li>diam</li></ul> nonumy eirmod temporary invidunt ut labore et dolore\n
aliquyam magna erat, sed diam voluptua.
输出应仅包含带有HTML标记的行:
记录1 =&gt;
Lorem ipsum dolor sit amet, <a href="http://foo.bar">consetetur</ a> sadipscing elitr\n
记录2 =&gt;
At vero eos et <strong>accusam</strong> et justo duo dolores et ea rebum.\n
记录3 =&gt;
<ul><li>sed</li> <li>diam</li></ul> nonumy eirmod temporary invidunt ut labore et dolore\n
我需要通过脚本运行手动审核输出。
有没有人知道相应的sql select语句,例如
SELECT `body` FROM `messages` WHERE `body` REGEXP -> `<regexp_for_html-tags_here>`;
或类似的东西。
问候
答案 0 :(得分:0)
如果你想使用正则表达式,你可以这样做:
SELECT body
FROM messages
WHERE body REGEXP '.*<[:alpha:][:alnum:]*.*>.*';
修改强>
在评论中有些人提到了表现。您可以使用LIKE和REGEXP的组合来提高性能 - 即like语句会将数据缩小到有趣的行,然后REGEXP可以优化搜索(例如,以避免出现这些字符而不是潜在标记的问题名)。
SELECT body
FROM messages
WHERE body like '%<%>%'
and body REGEXP '.*<[:alpha:][:alnum:]*.*>.*';