ホームページ >データベース >mysql チュートリアル >準備されたステートメントと「LIKE」キーワードを使用してワイルドカード検索を安全に実装するにはどうすればよいですか?
「like」キーワードを使用した準備済みステートメントによるワイルドカード検索の実装
準備済みステートメントは、データベース クエリを安全かつ効率的に実行する方法を提供します。キーワードに基づく検索機能を実装するには、「いいね」キーワードを利用できます。プリペアド ステートメントで "like" を使用するには、キーワードのワイルドカード コンポーネントをクエリに組み込む必要があります。
次のようなクエリがあるとします。
PreparedStatement pstmt = con.prepareStatement( "SELECT * FROM analysis WHERE notes like ?");
ワイルドカード検索を実行するには、クエリでワイルドカード パターンを指定する必要があります。これは、キーワード値の後にワイルドカード文字 (「%」) を挿入することで実現されます。たとえば、接頭辞一致検索を実行したい場合は、疑問符をnotes%:
pstmt.setString(1, notes + "%");
のようなパラメータに置き換えることができます。あるいは、ワイルドカードを付加して接尾辞一致を使用することもできます。キーワード値の先頭:
pstmt.setString(1, "%" + notes);
グローバル一致の場合、キーワード値を次で囲むことができます。ワイルドカード:
pstmt.setString(1, "%" + notes + "%");
「%」のような特殊文字を使用する場合、準備されたステートメントに干渉する可能性があることに注意することが重要です。この干渉を防ぐために、エスケープ文字を利用できます。たとえば、上記のコードでは、ワイルドカード文字がメタ文字として解釈されないようにエスケープ文字 (「!」) を導入しました。
PreparedStatement pstmt = con.prepareStatement( "SELECT * FROM analysis WHERE notes LIKE ? ESCAPE '!'");
これにより、ワイルドカード文字がメタ文字として扱われることが保証されます。メタキャラクターではなくリテラル文字。
以上が準備されたステートメントと「LIKE」キーワードを使用してワイルドカード検索を安全に実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。