2011-07-20 6 views
0

LIKEをSQL文でどのように使用して、検索で入力した文の単語を返すかを知りたいですか?それらが入力された順序にかかわらず、テキストボックス。SQLステートメント内の "LIKE"を使用して、文章内の単語を順序に関係なく照会する

これは私が使用したコードで、単語が順序

StringBuilder mystringBuilder = new StringBuilder(strSearch); 
mystringBuilder.Replace(" ", "%"); 

QueryClause q = new QueryClause("AND", "IssueDescription", "LIKE", "%" + strSearch + "%", SqlDbType.VarChar, false); 
colQueryClauses.Add(q); 

q = new QueryClause("OR", "IssueTitle", "LIKE", "%" + mystringBuilder + "%", SqlDbType.VarChar, false); 
colQueryClauses.Add(q); 
+0

あなたは自分がしようとしていることをより正確にする必要があります。テーブルの1つ以上のフィールドを検索していますか?検索テキストボックスに入力された1単語またはすべての単語を検索していますか? – Otiel

+0

私は、複数の単語を入力し、検索エンジンのようにすべての単語を検索することを話していると思います。少なくともそれは私が文から得たものです:) –

+0

私はこの文を持っています "私の犬はすべての人に吠える"現在私は "私の犬の吠え"を入力すればそれはうまく動作する行を返しますが、私は "犬私の吠え声は "0の結果を返します...私はそれが同じでなくても同じように動作するようにする方法を知りたい – VUDS

答えて

0

にあなたが使用して、列「バー」で単語「FOO」を検索することができます場合にのみ動作します:

WHERE Bar LIKE '%foo%' 

これはあなたが探しているものですか?そうでない場合は、例を挙げることができますか?

ジョン

+0

私はこの文を "私の犬はすべての人に吠える"現在、私は "私の犬の吠え"それはうまく動作する行を返しますが、私は "犬の私の吠え"を検索する場合0結果を返します...私はそれが同じでない場合でも同じように動作させる方法を知りたい – VUDS

3

あなたのテキストボックスにWORD1とWORD2を持っている場合は、それらを分割し、以下のように使用することができ、

に役立ちます願っています。

SELECT * FROM Table WHERE Column LIKE '%Word1%' AND Column LIKE '%Word2%' 

しかし、あなたはより良いfull text searchと利用照会するCONTAINSを定義したいです。

0
SELECT some_field 
FROM  some_table 
WHERE  some_field 
    LIKE '%first_value%' 
    OR  some_field 
    LIKE '%second_value%' 
    ... 
+0

私はこの文を "私の犬はすべての人に吠える"現在私は "私の犬の吠え"を入力すると、それはうまく動作する行を返します私は "犬の吠え声"を検索すると0の結果を返します...私はそれが同じではない順序でも動作させる方法を知りたいです – VUDS

+0

あなたは何か間違っている必要があります。そのSQL文は、dogまたはmy ORという単語を含む文を検索します。それは注文を気にしない。あなたは別の問題を抱えているかもしれないと思います。そしてあなたが行く前に、私はそれを試して、それが動作します:) –

1

あなたがのようなものを使用することができ、複数の単語を検索したい場合は:あなたが変更することができ

SELECT 
    * 
FROM 
    table 
WHERE 
    (Column LIKE '%word1%') OR 
    (Column LIKE '%word2%') OR 
    (Column LIKE '%word3%') 

をORするために、あなたはすべての単語の代わりに任意の

を含む列を取得したい場合

しかし、あまりにも多くの単語をあなたが議論として使うつもりであることを知っていなければならないので、あまり有用ではありません。

たぶん、あなたは言葉(セパレータとして空白文字を使用して)に検索文を分割し、C#ではSQL Serverのlink

+0

これは私が使用しているコードであり、単語が順番になっている場合にのみ動作しますStringBuilder mystringBuilder = new StringBuilder(strSearch); mystringBuilder.Replace( ""、 "%"); QueryClause q =新しいQueryClause( "AND"、 "IssueDescription"、 "LIKE"、 "%" + strSearch + "%"、SqlDbType.VarChar、false); colQueryClauses.Add(q); q =新しいQueryClause( "OR"、 "IssueTitle"、 "LIKE"、 "%" + mystringBuilder + "%"、SqlDbType.VarChar、false); colQueryClauses.Add(q); – VUDS

+0

実行する前に最終クエリの例を表示できますか?変数の値がわからなくてもわかりません – jasalguero

0

から全文検索機能を使用する必要があります。次に、このようなWHERE句になる文字列を作成します。

"WHERE searchColumn LIKE '% " + splitString[0] + " %' AND searchColumn LIKE '% " + splitString[1] + " %'" 

などです。 forループを使用します。残りのSQL問合せでWHERE句を連結して実行します。

+0

これは私が使用するコードであり、単語が順番になっている場合にのみ動作します。StringBuilder mystringBuilder = new StringBuilder(strSearch); mystringBuilder.Replace( ""、 "%"); QueryClause q =新しいQueryClause( "AND"、 "IssueDescription"、 "LIKE"、 "%" + strSearch + "%"、SqlDbType.VarChar、false); colQueryClauses.Add(q); q =新しいQueryClause( "OR"、 "IssueTitle"、 "LIKE"、 "%" + mystringBuilder + "%"、SqlDbType.VarChar、false); colQueryClauses.Add(q); – VUDS

関連する問題