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

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

Susan Sarandon
リリース: 2025-01-05 11:12:40
オリジナル
603 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート