LIKE を使用したプリペアド ステートメント内のワイルドカード クエリ
データベース クエリにプリペアド ステートメントを使用する場合、キーワードを使用した検索機能を実装するには、多くの場合、 LIKE 演算子。このガイドでは、準備済みステートメントを使用してこれを実現する方法に関する包括的なソリューションを提供します。
準備済みステートメントで LIKE 演算子を利用するには、準備済みステートメントに提供される値内の検索語にワイルドカード記号 (%) を追加できます。ステートメント (例:
String notes = "keyword%"; PreparedStatement pstmt = con.prepareStatement( "SELECT * FROM analysis WHERE notes LIKE ?"); pstmt.setString(1, notes); ResultSet rs = pstmt.executeQuery();
) ワイルドカードを追加して値を設定すると、「notes」列に入力キーワードが含まれるすべてのレコードと一致するクエリが有効になります。 substring.
ただし、%、!、[、_、] などの特定の文字は SQL で特別な意味を持ちます。これらの文字を適切に処理するには、準備されたステートメントで ESCAPE 句を使用してエスケープする必要があります。例:
String notes = "keyword%" .replace("!", "!!") .replace("%", "!%") .replace("_", "!_") .replace("[", "!["); PreparedStatement pstmt = con.prepareStatement( "SELECT * FROM analysis WHERE notes LIKE ? ESCAPE '!'"); pstmt.setString(1, notes + "%");
これらの文字をエスケープされたバージョンに置き換えることにより、準備されたステートメントはワイルドカードを正しく解釈し、それに応じてレコードを照合します。
検索要件に応じて、さまざまな一致シナリオを実現するためのワイルドカードの配置:
以上がLIKE を使用した準備済みステートメントでワイルドカードを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。