2011-02-08 6 views
7

最初の文字に基づいてmysqlクエリを注文しようとしていますが、私が使用したすべての方法で検索が制限されています。最初の文字でSQLクエリを注文する

MySQLのテーブル 値 コンピュータサービス ABCコンピュータサービス ダイナミックコンピュータサービス

私はcomputer servicesを検索する場合、私はとして返さに結果をしたい:私は使用しています

**Name** 
computer services 
abc computer services 
dynamic computer services 

mysql全文検索のテキストですが、私がname LIKE 'c%'を使用している場合は、他の2つの結果は表示されません。

SELECT name FROM table WHERE match('name') against('computer services*' IN BOOLEAN MODE) AND name LIKE 'c%'; 

これはのみ

  • コンピュータサービス

を返します。しかし、私はそれを返すようにしたい:

  • コンピュータサービス
  • ABCコンピュータサービス
  • ダイナミックコンピュータサービス

私は、フルテキスト検索の新機能です。

+0

私はフルテキスト検索についてよくわかりません(これは私がコメントではなく回答として投稿している理由です)。しかし、私は 'name LIKE 'c%''と何が起こるか見る。この式は、 'c'で始まり何かが続くものにのみ一致します。 'abc computer services'は' c'で始まらないので、なぜ選択されないのだろうと思います。 – FrustratedWithFormsDesigner

+0

投稿した皆さん、ありがとうございます。数分で驚くほどの蘇生! –

答えて

2

「開始」ケースに最初に一致するorder by句を使用します。ブール値が0または1を返すので、ここではnot likeを使用しています。最初に大文字と小文字を区別するために逆にしたいと思います。

SELECT name 
FROM table 
WHERE match('name') against('computer services*' IN BOOLEAN MODE) 
ORDER BY name NOT LIKE 'computer services%', name; 
+0

パーフェクトありがとう –

関連する問題