ホームページ >データベース >mysql チュートリアル >パターン マッチングのために SQL の LIKE ステートメントでパラメーターを使用できますか?

パターン マッチングのために SQL の LIKE ステートメントでパラメーターを使用できますか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-05 11:12:40610ブラウズ

Can Parameters Be Used with the LIKE Statement in SQL for Pattern Matching?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。