私は次のコードを持っています:
const string Sql =
@"select distinct [name]
from tblCustomers
left outer join tblCustomerInfo on tblCustomers.Id = tblCustomerInfo.CustomerId
where (tblCustomer.Name LIKE '%@SEARCH%' OR tblCustomerInfo.Info LIKE '%@SEARCH%');";
using (var command = new SqlCommand(Sql, Connection))
{
command.Parameters.AddWithValue("@SEARCH", searchString);
...
}
これは機能しません、私もこれを試しました:
const string Sql =
@"select distinct [name]
from tblCustomers
left outer join tblCustomerInfo on tblCustomers.Id = tblCustomerInfo.CustomerId
where (tblCustomer.Name LIKE @SEARCH OR tblCustomerInfo.Info LIKE @SEARCH );";
using (var command = new SqlCommand(Sql, Connection))
{
command.Parameters.AddWithValue("@SEARCH", "'%" + searchString + "%'");
...
}
しかし、これもうまくいきません。何が悪いのでしょうか?助言がありますか?
あなたが欲しいのは:
tblCustomerInfo.Info LIKE '%' + @SEARCH + '%'
(または、パラメータ値を編集して、最初に%を含めます)。
それ以外の場合は、(最初のサンプル)リテラル "@SEARCH"(引数値ではない)を検索するか、クエリに追加の引用符を埋め込みます(2番目のサンプル)。
いくつかの方法で、TSQLにLIKE @SEARCH
を使用させ、呼び出し側で処理する方が簡単な場合があります。
command.Parameters.AddWithValue("@SEARCH","%" + searchString + "%");
どちらのアプローチでも機能するはずです。
代わりに:
const string Sql =
@"select distinct [name]
from tblCustomers
left outer join tblCustomerInfo on tblCustomers.Id = tblCustomerInfo.CustomerId
where (tblCustomer.Name LIKE '%@SEARCH%' OR tblCustomerInfo.Info LIKE '%@SEARCH%');";
このコードを使用してください:
const string Sql =
@"select distinct [name]
from tblCustomers
left outer join tblCustomerInfo on tblCustomers.Id = tblCustomerInfo.CustomerId
where (tblCustomer.Name LIKE '%' + @SEARCH + '%' OR tblCustomerInfo.Info LIKE '%' + @SEARCH + '%');";