[解決済み] SQLのLIKE句でSqlParameterを使用することはできません。
2023-05-04 20:41:26
質問
次のようなコードがあります。
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 + '%'
(または、そもそも % を含むようにパラメータ値を編集する)。
そうでない場合は、(最初のサンプル)検索で リテラル を検索しているか(arg-valueではない)、クエリに余分な引用符を埋め込んでいるか(2番目のサンプル)です。
ある意味では、TSQL が単に
LIKE @SEARCH
を使用し、呼び出し側でそれを処理する方が簡単かもしれません。
command.Parameters.AddWithValue("@SEARCH","%" + searchString + "%");
どちらの方法でも良いはずです。
関連
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] SQLのIN句をパラメータ化する
-
[解決済み] T-SQLでnot equalには!=と<>のどちらを使うべきですか?
-
[解決済み] SQL Server の CASE ステートメントで OR がサポートされていない。
-
[解決済み] SQL Server Management Studio & Transact SQLにおけるGOの使用方法とは?
-
[解決済み] LinqでSQL Like %を行うには?
-
[解決済み】LIKE句の角括弧をエスケープするにはどうしたらいいですか?
-
[解決済み] 左外部結合から返されるデフォルトの Null 値の置き換え
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み] 2つのリストを結合する
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】データが存在しないのに読み込もうとする試みが無効である