私たちは、ソートの文によって、フィールド、通常の順序により、フィールドが存在する場合は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) - %」
そうであっても、データが漏洩することはありません。