Dapperはlike演算子をサポートしていますか?
2023-11-10 04:51:34
質問
Dapper-dot-netを使用しています...
以下は、データオブジェクトに何も結果をもたらしません。
var data = conn.Query(@"
select top 25
Term as Label,
Type,
ID
from SearchTerms
WHERE Term like '%@T%'",
new { T = (string)term });
しかし、通常のString Formatを使用すると、次のようになります。
string QueryString = String.Format("select top 25 Term as Label, Type, ID from SearchTerms WHERE Term like '%{0}%'", term);
var data = conn.Query(QueryString);
コレクションに25行が戻ってきました。 Dapperはパラメータの最後を正しくパースしていないのでしょうか?
@T
?
どのように解決するのですか?
試してみてください。
term = "whateverterm";
var encodeForLike = term => term.Replace("[", "[[]").Replace("%", "[%]");
string term = "%" + encodeForLike(term) + "%";
var data = conn.Query(@"
select top 25
Term as Label,
Type,
ID
from SearchTerms
WHERE Term like @term",
new { term });
パラメータを文字列リテラルの中に入れても動作せず、代わりに文字列として解釈されます。
ノート
2番目のスニペットのハードコードされた例は、SQLインジェクションの大きな問題であることに加え、dapperのリークを引き起こす可能性があるため、強くお勧めしません。
注意点
任意の
like
というマッチはSARGableではありません。これは、インデックススキャンが必要であり、遅いことを意味します。
関連
-
MySQL - ストアドプロシージャ (データ型、関数)
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] UNIONとUNION ALLの違いは何ですか?
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?
-
[解決済み] カラム名の変更 SQL Server 2008
-
[解決済み] SQL Server の VARCHAR/NVARCHAR 文字列に改行を挿入する方法
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
ERROR 1136 (21S01) を解決してください。列の数が Mysql の行 1 の値の数と一致しません。
-
解決策:java.sql.SQLException: ユーザー ''@'localhost'' (パスワード: YES を使用) のアクセスが拒否されました。
-
[解決済み] SQL Serverで実行中の合計を計算する
-
[解決済み] 複数の列でgroup byを使用する
-
[解決済み] SQL Serverにおける関数とストアドプロシージャの比較
-
[解決済み] 最初の行への結合方法
-
[解決済み] 各グループの上位1行を取得
-
[解決済み] 項目xにアクセスできるように文字列を分割するにはどうすればよいですか?
-
[解決済み】LIKE句の角括弧をエスケープするにはどうしたらいいですか?
-
[解決済み] SQLiteで文字列の連結がうまくいかない