5

データベースの種類: MySql

私のテーブルにこのような2つの行があるとします:

[1.] 「ピーターは昨日公園に行きました
」 [2.] 「ピーターは明日公園に行きます」

...そして、これをパターン文字列として持っていると仮定します:

「マークは昨日映画館に行きました

...最初のレコードを取得するクエリを作成するにはどうすればよいですか? 最初のレコードが私が探しているものになる他の多くのケースがある可能性があります:

-「レナードは昨夜図書館に行きました
」 -「ジェイクは去年ロンドンに行きました」

...等々。


:実際の問題は私が探す必要がある状態であるため、テーブル構造は表示していません。ただし、テーブルはtableと呼ばれ、2 つのフィールド ( idstring )があると仮定できます。

編集: MySqlにFULLTEXTインデックスがあり、この作業に役立つ可能性があることは知っています。私はまた、それらがinnoDBテーブル(私が使用している) では機能しないことを読みました。(それが不可能な場合は、DB を再設計して、このテーブルを MyISAM にすることができます)

編集:eggyalがこの質問への最初のコメントで言っているように、「v5.6」はinnoDBテーブルもサポートしています。

編集:別の例は次のとおりです。

[1.]今日は空が青く見える
[2.]今日は火が赤く見える

そして、次のように仮定して最初のレコードを取得したいと思います。

今日の海は青く見える

...パターン文字列として。

(この場合、2 番目のレコードも一致し、最初のレコードよりも関連性が低くなります。これは、look $ todayが含まれているためです)

4

1 に答える 1

3

クエリで使用できlikeます。次の例を参照してください。

mysql> select * from statements;
+----------------------------------+
| sentence                         |
+----------------------------------+
| Peter went to the park yesterday |
| Mark went to the cinema          |
| Peter is going the park tomorrow |
| Mark went to the park yesterday  |
| Mark went to the park tommorow   |
+----------------------------------+
5 rows in set (0.00 sec)

mysql> select * from statements where sentence like '% went to the park yesterday';
+----------------------------------+
| sentence                         |
+----------------------------------+
| Peter went to the park yesterday |
| Mark went to the park yesterday  |
+----------------------------------+
2 rows in set (0.00 sec)

mysql> select * from statements where sentence like '% went to the park %';
+----------------------------------+
| sentence                         |
+----------------------------------+
| Peter went to the park yesterday |
| Mark went to the park yesterday  |
| Mark went to the park tommorow   |
+----------------------------------+
3 rows in set (0.00 sec)
于 2013-01-03T12:59:58.407 に答える