0

mysql テーブルには、テキスト型の「本文」という名前のフィールドに 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 =>

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>

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 =>

Lorem ipsum dolor sit amet, <a href="http://foo.bar">consetetur</ a> sadipscing elitr\n

レコード 2 =>

At vero eos et <strong>accusam</strong> et justo duo dolores et ea rebum.\n

レコード 3 =>

<ul><li>sed</li> <li>diam</li></ul> nonumy eirmod temporary invidunt ut labore et dolore\n

スクリプト実行による手動レビュー用の出力が必要です。

対応するSQL選択ステートメントのアイデアはありますか?

SELECT `body` FROM `messages` WHERE `body` REGEXP -> `<regexp_for_html-tags_here>`;

またはこのようなもの。

よろしく

4

1 に答える 1

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:]*.*>.*';

http://sqlfiddle.com/#!2/70c47/2

于 2013-10-01T22:34:08.417 に答える