SQL でのパラメータと LIKE ステートメントの使用方法
SQL では、LIKE ステートメントを使用して文字列内でパターン マッチングを実行できます。ただし、適切な予防策を講じずに使用すると、SQL インジェクション攻撃につながる可能性があります。このような攻撃を防ぐために、パラメータ化されたクエリを使用できます。
元の質問
SQL インジェクションの脆弱性を制限するために、パラメータを使用して次のクエリが構築されました。
SELECT * FROM compliance_corner WHERE (body LIKE '%@query%') OR (title LIKE '%@query%')
ただし、このクエリをプログラムで実行しても結果は得られません。パラメーターはこの方法で使用できますか、それとも次のような状況でのみ適用されますか:
SELECT * FROM compliance_corner WHERE body LIKE '%<string>%'
ソリューション
パラメーターは意図したとおりに LIKE ステートメントで使用できます。 。元のクエリの構文が正しくありません。このシナリオでパラメーターを使用する正しい方法は次のとおりです。
Dim cmd As New SqlCommand( "SELECT * FROM compliance_corner" _ + " WHERE (body LIKE @query )" _ + " OR (title LIKE @query)") cmd.Parameters.Add("@query", "%" & searchString & "%")
このクエリは、本文フィールドまたはタイトル フィールド内の検索文字列を含む文字列と正しく一致します。
VB。 NET に関する考慮事項
提供されたソリューションは、VB.NET に対して構文的に正しいです。ただし、実際の実装は、使用される特定のデータベース プロバイダーと接続方法によって異なる場合があります。詳細については、該当するドキュメントを参照してください。
以上がパターン マッチングのために SQL の LIKE ステートメントでパラメーターを使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。