2016-04-16 17 views
0
SqlCommand cmd = new SqlCommand("select * from [Table] where Col1 like 
         %@astr% or Col2 like %@astr% or Col3 like %@astr%)", con);   
cmd.Parameters.AddWithValue("@astr", st); 

上記のコマンドで何が問題になっていますか? 「@astrの近くに」というエラーメッセージが表示されます。SQLコマンドの検索

+2

SQLクエリの最後に ')'を削除してみてください。これは%like @%astr% –

+0

です!ありがとうございました! 3時間と私もそれを把握することはできません – user3688221

+0

忙しい一日で起こる心配はありません:-) –

答えて

1

変数にはワイルドカード文字(%)を指定し、ワイルドカード文字を削除する必要があります。

st = string.Format("%{0}%", st); // in case your search string don't have wild characters.. 
SqlCommand cmd = new SqlCommand("select * from [Table] where Col1 like 
         %@astr% or Col2 like @astr or Col3 like @astr)", con);   
cmd.Parameters.AddWithValue("@astr", st); 
0

検索行方不明の文字列と1つの括弧の前後に引用符があまりにも多くあります。

SqlCommand cmd = new SqlCommand(
    @"select * from [Table] 
    where Col1 like '%' || @astr || '%' 
     or Col2 like '%' || @astr || '%' 
     or Col3 like '%' || @astr || '%'", con);   
+0

はそれです|| ? 私はこれをSQLクエリの中で見たことがありません – user3688221

+0

これは文字列を連結する標準のSQL演算子です。 ''こんにちは '|| '世界'。ほぼすべてのDBMSがこの構文をサポートしています。しかし、例外もあります。私は、SQL Serverが非標準の '+'を使用していると思います。そして、MySQLではいくつかの設定に依存するかもしれないし、代わりに 'CONCAT'を使わなければならないかもしれません。 –

-1

ASTRが文字列である場合。これを試すことができます。

string astr = "ABC"; 
SqlCommand cmd = new SqlCommand("select * from [Table] where Col1 like %" + astr + "% or Col2 like %" + astr + "% or Col3 like %" + astr + "%", con); 
cmd.Parameters.AddWithValue("@astr", st);