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 でのフレックスレイアウトの詳細な説明

推薦する

HTMLを圧縮しない理由はいくつかある

理由は簡単です。 HTML ドキュメントでは、複数の空白文字は 1 つの空白文字と同等です。つまり、...

JS addEventListener() およびattachEvent() メソッドは登録イベントを実装します

JavaScript の DOM イベント モデルでは、オブジェクトの addEventListen...

React Router V6 のアップデート

目次ReactRouterV6 の変更1. <Switch> が <Routes&...

CSS3 で translate と transition を使用する方法

translate と transition は非常に強力で、習得するのは不可能だといつも感じていま...

shtml includeの使い方

これを応用することで、ウェブサイトの一部の公開領域を独立したページにすることができ、その後、この技術...

VMware Workstation Pro が Windows で実行されない場合の解決策

国慶節の休暇後、Windows アップデート後に VMware 仮想マシンが開けなくなり、「VMwa...

CSS でフッターの「下部吸収」効果を実現

よく遭遇する問題: 下部の要素を「下部に貼り付ける」効果を CSS でどのように実現するか。この記事...

フォームのデフォルトの送信方法を変更する方法

htmlのデフォルトの送信方法は、postではなくgetです。postに変更したい場合は、 meth...

選択/フォーカス時にすべてのオプションをリストする現在のより良い方法

開発中にこのような要件に遭遇したので、将来使用するために記録しました。需要背景キーボード ショートカ...

Linux システムのパフォーマンスを分析するための top コマンドの詳細な説明

Linux topコマンドの紹介top コマンドは、Linux でよく使用されるパフォーマンス分析ツ...

CentOS 7 環境でソースコードから MySQL 5.7 をインストールする方法

この記事では、CentOS 7 環境でソース コードから MySQL 5.7 をインストールする方法...

Reactの原理の説明

目次1. setState() の説明1.1 データの更新1.2 推奨構文1.3 2番目のパラメータ...

CocosCreatorを使ってシューティングゲームを作る方法

製造手順を分析します。 1. リソースを準備してシーンを構築するオンラインでリソースを探すか、私のリ...

Idea は、Web プロジェクトを開始するように Tomcat を設定します。グラフィック チュートリアル

tomcatの設定1. 実行構成をクリック 2. tomcat localを選択 3. tomcat...

画像マーキー効果を実現するネイティブJS

今日は、ネイティブ JS で実装された画像マーキー効果を紹介します。効果は次のとおりです。 実装され...