ホームページ  >  記事  >  Java  >  準備されたステートメントで「Like」ワイルドカードを使用するにはどうすればよいですか?

準備されたステートメントで「Like」ワイルドカードを使用するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-19 14:13:02960ブラウズ

How to Use the

準備されたステートメントでの "like" ワイルドカードの使用

問題の理解

データベース クエリ「like」ワイルドカードは、キーワード パターンに基づいてデータを検索するためによく使用されます。準備されたステートメントを使用してクエリのセキュリティとパフォーマンスを強化する場合、「like」ワイルドカードを効果的に組み込むのが難しい場合があります。

PreparedStatement を使用した解決策

「like」を使用するには" 準備されたステートメントにワイルドカードを使用する場合、SQL 文字列自体は変更されません。代わりに、ステートメントで設定した値内に「keyword%」を設定します。さまざまな検索を行う方法は次のとおりですタイプ:

  1. 前置一致:

    // 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 + "%");
  2. サフィックスマッチ:

    pstmt.setString(1, "%" + notes);
  3. グローバルMatch:

    pstmt.setString(1, "%" + notes + "%");

準備されたステートメントに割り当てられた値に「keyword%」を設定すると、クエリのセキュリティやパフォーマンスを損なうことなく、ワイルドカード検索を効率的に実行できます。

以上が準備されたステートメントで「Like」ワイルドカードを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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