0

2 台のオートバイのデータベースを取得しました。

  • ヤマハ R1 ホワイト 2000 と
  • ヤマハ R125 ホワイト 2005

クエリを送信すると:

SELECT * FROM bikes WHERE title LIKE '%$search%'

次に、「yamaha R125」を検索するとすべて問題ありませんが、「yamaha R1」を検索すると、yamaha R1 と yamaha R125 の 2 つの結果が得られます。

タイトルは「yamaha R1 white 2005」だけでなく、「excellent yamaha R1」など誰でも自由に指定できます。

それを整理する方法はありますか?

4

6 に答える 6

1

LIKEを使用している限り、MySQLは理解できません。解決策は2つだけです:-

1. Either segregate model and color from that single field and keep it in separate field 

2. SELECT * FROM bikes where title like 'yamaha R1%' AND title like '%2000';
于 2013-01-10T11:12:27.547 に答える
0

これらが役に立たない場合

単語全体だけをLIKEと一致させますか?

mysql SELECT LIKEは、単語全体を変数にのみ一致させる必要があります

次に、スキーマやユーザー入力などを変更せずに、基本的なMysqlでそれが可能かどうかはわかりません。

専用サーバーを使用している場合、または非常に優れたWebホストを使用している場合は、Sphinx検索エンジンhttp://sphinxsearch.com/が必要な方法で機能することを知っています。

于 2013-01-10T11:54:07.460 に答える
0

like 句を使用している理由、title=$search を使用

SELECT * FROM bikes WHERE title='$search'
于 2013-01-10T10:53:58.743 に答える
0

これを試してSELECT * FROM bikes WHERE title = '$search'

1 つの結果のみが必要な場合

like 句はワイルドカード検索に使用されます。% 記号を使用すると、ワイルドカードのように検索されます

次のリンクを確認して、 文字列比較の詳細を確認してください

于 2013-01-10T10:54:24.150 に答える
0

ここでの問題は $search の値です:

SELECT * FROM bikes WHERE title LIKE '%$search%'

これで、「ANYTHING+$search+ANYTHING」に等しいタイトルを検索しようとしています

検索%yamaha R1%結果は次のとおりです。

yamaha R1 white 2000, yamaha R125 white 2005

ここでの問題は次のとおりです。これを使用'%search'しても機能しません。最後に「白 2000」があるためです。表の別のフィールドに色と数字を設定してから、次のように検索してみてください。

SELECT * FROM bikes WHERE title LIKE '$search'

これにより、yamaha R1 のすべての情報が返されます。フィールドの 1 つは色が「白」で、もう 1 つは数字が「2000」です。

于 2013-01-10T10:58:42.213 に答える
0

これはあなたが望むものです:

SELECT * FROM bikes WHERE  title REGEXP '[[:<:]]$search[[:>:]]' = 1;
于 2013-01-10T15:54:09.700 に答える