SQL ファジー クエリ レポート: ORA-00909: パラメータの数が無効です。解決策

SQL ファジー クエリ レポート: ORA-00909: パラメータの数が無効です。解決策

あいまいクエリにOracleデータベースを使用する場合、

コンソール エラーは次の図に表示されます。

理由は、入力が速すぎて文法が間違っていたからです。

正しい書き方は

pd.code は concat(concat('%',#{keyword}),'%') のように

java.sql.SQLSyntaxErrorException: ORA-00909: パラメータの数が無効です

複数パラメータのあいまいクエリに MyBatis を使用しているときに、この例外が発生しました。印刷ログを確認すると、プリコンパイル後、実際のパラメータを挿入するときに例外が発生したことがわかりました。

==> 準備中: select role_id, role_name, note from t_role where role_name like concat('%', ?, '%') and note like concat('%', ?, '%')
2018-12-13 20:24:28,567 DEBUG [com.ss.learn.chapter3.mapper.RoleMapper.getRolesByIdAndNote] - ==> パラメータ: 1(文字列)、1(文字列)

例外メッセージ: パラメータの数が無効です。 SQL文を確認しました

t_roleからrole_id、role_name、noteを選択します
role_name は concat('%', ?, '%') のようになり、note は concat('%', ?, '%') のようになります。

問題は concat で発生していることがわかりました。concat は 2 つの文字列を連結する関数です。ここでは 3 つが連結されています。SQL を 2 つのネストされた concat に変更します。

<select id="getRolesByIdAndNote" パラメータタイプ="map" 結果タイプ="role">
        t_roleからrole_id、role_name、noteを選択します 
        role_name は concat(concat('%', #{roleName}), '%') のようになります
        そして、concat(concat('%', #{note}), '%') のようにメモします。
    </選択>

要約する

操作は成功しました!上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • SQLファジークエリについて
  • SqlServer のファジー クエリで特殊文字を処理する方法
  • SQL Server のあいまいクエリの一般的な方法の概要
  • MySQL ファジークエリを使用して中国語の文字を入力するときに Mybatis が結果を取得できない場合の対処方法

<<:  DockerはRedis5.0をビルドし、データをマウントします

>>:  CSS でのフレックスレイアウトの詳細な説明

推薦する

Ubuntu 18でターミナルを美しいコマンドラインプロンプトに変更する方法

VMware と Ubuntu を再インストールしましたが、コマンドラインプロンプトが単調すぎて美し...

Alpine Dockerイメージフォント問題解決操作

1. フォントを実行し、フォント フォルダーを開いて、使用するフォント ファイルを見つけます。 2....

Vue Notepadの例の詳細な説明

この記事の例では、メモ帳機能を実装するためのVueの具体的なコードを参考までに共有しています。具体的...

MySQL 最適化 query_cache_limit パラメータの説明

クエリキャッシュ制限query_cache_limit は、単一のクエリで使用できるバッファ サイズ...

Div CSS 命名標準 CSS クラスの命名規則 (SEO 標準に準拠)

検索エンジン最適化 (SEO) では実行すべきタスクが多数ありますが、その中でもコードの最適化は重要...

Vue でメニュー権限制御を実装するためのサンプルコード

バックエンド管理システムで作業している場合、通常、メニュー権限制御に関連する問題に遭遇します。もちろ...

CentOSはexpectを使用してスクリプトやコマンドをバッチでリモート実行します

サーバーへのファイルのアップロード、ソフトウェアのインストール、コマンドやスクリプトの実行、サービス...

HTML 左、中央、右の適応レイアウト (calc css 式を使用)

最新の HTML 標準には、レイアウトを計算するために使用できる calc CSS 式があります。し...

ウェブデザイン必携ハンドブック 216 ウェブセーフカラー

Web ページ上の色の表現は、さまざまな要因によって影響を受けます。Web ページで非常に美しい配色...

CSS ウェイト値(カスケード)の例の詳細な説明

•CSSには多くのセレクターがあります。複数のセレクターを同じ要素に適用するとどうなるでしょうか? ...

HTML でフォーム コントロールを無効にする 2 つの方法: readonly と disabled

Web ページを作成する過程では、フォームがよく使用されます。しかし、フォーム上のコントロールを変更...

border-radiusは要素に丸い境界線を追加する方法です

border-radius:10px; /* すべての角は半径 10px で丸められます*/ bor...

JavaScript 関数をよりエレガントにする方法

目次分割代入を使用したオブジェクトパラメータコールバック関数の命名条件文を説明的にするスイッチ文をM...

MySQL はエンタープライズレベルのログ管理、バックアップ、リカバリの実践的なチュートリアルを実装します

背景事業が発展するにつれ、会社の事業内容や規模は拡大し続け、ウェブサイトには大量のユーザー情報やデー...