準備されたステートメントでの "like" ワイルドカードの使用
問題の理解
データベース クエリ「like」ワイルドカードは、キーワード パターンに基づいてデータを検索するためによく使用されます。準備されたステートメントを使用してクエリのセキュリティとパフォーマンスを強化する場合、「like」ワイルドカードを効果的に組み込むのが難しい場合があります。
PreparedStatement を使用した解決策
「like」を使用するには" 準備されたステートメントにワイルドカードを使用する場合、SQL 文字列自体は変更されません。代わりに、ステートメントで設定した値内に「keyword%」を設定します。さまざまな検索を行う方法は次のとおりですタイプ:
前置一致:
// Replace escape characters to prevent conflict with wildcard notes = notes .replace("!", "!!") .replace("%", "!%") .replace("_", "!_") .replace("[", "!["); PreparedStatement pstmt = con.prepareStatement( "SELECT * FROM analysis WHERE notes LIKE ? ESCAPE '!'"); pstmt.setString(1, notes + "%");
サフィックスマッチ:
pstmt.setString(1, "%" + notes);
グローバルMatch:
pstmt.setString(1, "%" + notes + "%");
準備されたステートメントに割り当てられた値に「keyword%」を設定すると、クエリのセキュリティやパフォーマンスを損なうことなく、ワイルドカード検索を効率的に実行できます。
以上が準備されたステートメントで「Like」ワイルドカードを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。