0

私は以前にこの質問をしました:

2つのテキストアイテム間のデルタを取得する方法

しかし、私はもっとバイナリの答えも必要です。つまり、あるテキストエントリに別のテキストエントリが含まれているかどうかを判断する方法はありますか。再び例:

This is a line.

This is a line.  And another.

MySQLに最初のものが2番目のものに含まれていることを伝える簡単な方法はありますか?これらの項目は両方とも、テキストタイプの列のエントリです。

アップデート:

私のテーブルはこんな感じ

id INT、mytextテキスト

だから、私が本当にやりたいのは、次の質問に答えるクエリを書くことです。

mytextがmytext_for_another_record(id = SOMENUMBER)に含まれているこのテーブルのすべてのレコードを検索します。

おそらく、より適切に言えば、id = 123およびmytext(id 123の場合)がレコードに含まれているすべてのレコードを検索します。

そのため、テーブル全体をスキャンして、id=123のエントリのテキストを含むレコードを探しています。

データ例:

id | 文章

1 | これは2行目です| これは線であり、ここに別の3つがあります| ランダム4| ランダムこれは線です

ここで、短いテキストエントリではなく、テキストが1000文字のように非常に長いと仮定します。レコード1にあったテキストを含むデータベース内のすべてのレコードを検索したいとします。そうする唯一の方法は言うのLIKE '%this is a line%'ですか?レコードのIDを指定して確認する方法はありますか?

4

4 に答える 4

2

INSTR(haystack、needle)関数をチェックし、0と比較します。0の場合、haystackは含まれていませんneedleLIKE演算子とワイルドカード( )を使用してそれを行うこともできますが、標識%をエスケープする必要があります。%

于 2012-06-15T20:56:12.637 に答える
0

これにより、指定されたテキストを含むすべての行が返されます。

SELECT id, line FROM lines WHERE line LIKE '%This is a line.%';

フィドルはここにあります。

于 2012-06-15T20:55:44.237 に答える
0

関数を使用できますLOCATE。1つの文字列が別の文字列に存在する場合、それ以外の場合は0の数値を取得します。

関数はLOCATE(substr,str)です。詳細はこちらをご覧ください

于 2012-06-15T20:57:46.130 に答える
0

concat() も使用できます。

SELECT id, searched,text FROM table_name WHERE text LIKE concat('%', searched, '%');
于 2015-11-23T15:43:11.663 に答える