[解決済み] プリペアドステートメントで "like "ワイルドカードを使用する
2022-04-23 16:39:36
質問
私は、mysqlデータベースのクエリを実行するために準備されたステートメントを使用しています。そして、ある種のキーワードに基づいた検索機能を実装したいのです。
そのためには
LIKE
というキーワードがあること、それだけは知っています。また、プリペアドステートメントを使ったことがありますが、それを
LIKE
というのも、以下のコードのどこに
'keyword%'
?
で直接使用することはできますか?
pstmt.setString(1, notes)
として
(1, notes+"%")
とか、そんな感じです。ウェブ上でこの件に関する多くの投稿を見ますが、どこにも良い答えがありません。
PreparedStatement pstmt = con.prepareStatement(
"SELECT * FROM analysis WHERE notes like ?");
pstmt.setString(1, notes);
ResultSet rs = pstmt.executeQuery();
解決方法は?
プリペアドステートメントのSQL文字列ではなく、値自体に設定する必要があります。
ということは、プレフィックスマッチはこれでいいんですね。
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);
またはグローバルにマッチします。
pstmt.setString(1, "%" + notes + "%");
関連
-
スタイルが読み込まれず、ブラウザのコンソールでエラーが報告される。リソースはスタイルシートとして解釈されますが、MIMEタイプtext/htmlで転送されます。
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
this()の呼び出しはコンストラクタ本体の最初の文でなければならない 例外解決と原因分析
-
JDKの設定時にjava.dllが見つからない、java SE Runtime Environmentが見つからない問題が発生しました。
-
xxx:jarのアーティファクトディスクリプタの読み込みに失敗した問題は解決しました。
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] PDO Preparedが1つのクエリで複数行を挿入する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
をインスタンス化することができません。
-
Javaクラスローダーにソースコードから潜り込む
-
javaの模造品QQ WeChatのチャットルーム
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 4 at text.Division.main(Divisi
-
Java コンパイルエラー - スレッド "main" で例外 java.lang.Error: 未解決のコンパイル問題です。
-
javaでクラスを作成すると、enclosing classでないように見える
-
ブラウザでの大容量ファイルスライスアップロード(Javaサーバサイド実装)
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。