SELECT
テキストにワイルドカード文字間のビットが含まれている行のみが見つかりますLIKE
。そのような比較ロジックとを組み合わせることはできません。
ただし、できることは、正規表現を使用してテキストの関連セクションを取り除き、それを分析することです。
ただし、その組み合わせを覚えておいてください
- 大量のテキスト
- テキストコンテンツロジック
- 正規表現
一度に最高のパフォーマンスを提供することはできません!私は次のことを提案します:
- トリガーを使用してテキストのサブセクションを削除し、管理しやすいもの(つまり、50文字程度)を使用できるようにして、このサブテキストを別のテーブルに挿入します
- MySql正規表現またはフルテキスト関数を使用してCOUNTを分析します
したがって、トリガーは次のようになります。
select
ltrim(rtrim(substring(paragraphs, instr(paragraphs, 'count:') + 6, 10)))
from books
where instr(paragraphs, 'count:') > 0
'count:'
これにより、空白が削除された後、次の10文字が取得されます。次に、たとえば、それをさらに洗練することができます
select substring(text_snippet, 1, instr(text_snippet, ' ')) as count_value
from
(
select
ltrim(rtrim(substring(paragraphs, instr(paragraphs, 'count:') + 6, 10)))
as text_snippet
from books
where instr(paragraphs, 'count:') > 0
) x
where isnumeric(substring(text_snippet, 1, instr(text_snippet, ' '))) = 1
数値がCOUNTビットの後に続く行を取得します。
次に、COUNTの横にある数値を抽出し、それらを数値として別のテーブルに保存してから、次のようにJOINを使用できます。
select b.*
from books b inner join books_count_values v
on b.id = v.books_id
where v.count_value > 0
こちらをご覧ください
http://dev.mysql.com/doc/refman/5.1/en/string-functions.html
あなたの処分で機能のために。