MSSQLサーバの順序などのようなステートメント

私たちは、ソートの文によって、フィールド、通常の順序により、フィールドが存在する場合はnull値は、それがトップのNULL値にこれを置くときは、

我々はそれを解決する方法を持っていれば?

答えはイエスです。

CASE BY ORDER OrderNumがTHEN ELSE 1つの0 END NULL IS

この場合、最後にこのラインアップのNULL値。

 

Dapperのクエリデータを使用する場合は、時々、あいまいクエリを使用し、このように:

セックス= '男' AND( 'XXX' のような 'XXX' OR備考ようCARDNO)T_Test SELECT * FROM

書面でそうDapperの場合:

公共の一覧<TestModel>テスト(文字列の性別、文字列キーワード){
   VARの SB = 新しい StringBuilderの(" SELECT * FROM T_Test WHERE 1 = 1 " ); 
  sb.Append(" ANDセックス= @セックス" ); 
  sb.Append(" AND(コンテンツLIKE '%" +キーワード+ " %' OR備考LIKE '%" +キーワード+ " %')" );
  戻り DapperHelper.Queryを<TestModel>(sb.ToString()、新しい {セックス= 性別})ToListメソッド()。
}

%「または1 = 1) - :キーワードは、パラメータを記述する場合

SQL文が生成されます。

SELECT * FROM T_Test WHERE 1 = 1 
とセックス= '男' 
AND(コンテンツLIKE '%%'または1 = 1) - %」OR Remakr LIKE '%%')

そして、あなたにお祝いの言葉、他の人があなたの情報のすべてを取得します。

次に、どのように我々はそれに対処することがありますか?

その方法は、Dapperのを修正することです

公共の一覧<TestModel>テスト(文字列の性別、ストリング・キーワード){ 
  VAR SBは=新しいStringBuilderの( "T_Test SELECT * FROM"); 
  sb.Append( "ANDセックス= @セックス"); 
  sb.Append( "@KeyWords LIKE @KeyWords OR備考LIKE AND(コンテンツ)"); 
  DapperHelper.Query <TestModel>(sb.ToString()、新しい{セックス=性別、キーワード= '%' +キーワード+ '%'を})を返すToListメソッド()。
}

  SQL文が生成されます

1 = 1セックス= @セックスAND(@KeyWords LIKE @KeyWords OR備考LIKEコンテンツ) 'N '@キーワードT_TestからEXEC sp_executesqlをするN'SELECT * 
NVARCHAR(4000)'、キーワード@ = N '%%''か1 = 1) - %」

  そうであっても、データが漏洩することはありません。

おすすめ

転載: www.cnblogs.com/mantishell/p/11343865.html