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

推薦する

React リストバーとショッピングカートコンポーネントの使用の詳細な説明

この記事では、Reactリストバーとショッピングカートコンポーネントの具体的なコードを参考までに紹介...

nginx を使用したプロキシ サーバーの設定

Nginx は、リバース プロキシ機能を使用して負荷分散を実装できるほか、フォワード プロキシ機能を...

プロジェクトに必須の 8 つの JavaScript コード スニペット

目次1. ファイル拡張子を取得する2. コンテンツをクリップボードにコピーする3. スリープ時間は何...

ウェブデザインの初心者に役立つ学習教材をいくつかお勧めします

勉強中に読んだ本についてもよく聞かれます。以下は初心者におすすめの本です(私が勉強中に読んだ本です。...

MySQL実践スキル: 2つのテーブルに異なるデータがあるかどうかを比較する方法の分析

この記事では、MySQL が 2 つのテーブルを比較して、異なるデータがあるかどうかを確認する方法を...

デザイン参考 WordPressウェブサイト構築成功事例

これら 16 のサイトはそれぞれ注意深く読む価値があり、どのサイトでも推奨されている Web サイト...

BootStrap グリッド間に隙間を残す解決策

目次[例を見る]: 【本来の効果は以下の通り】理由は次のとおりです。 【解決】:要約するBootSt...

WeChatアプレットのスケルトン画面の実装例

目次スケルトンスクリーンとはアプレットでスケルトン画面を生成する方法導入方法表示と非表示ユーザーエク...

Vueの自己ネストツリーコンポーネントの使い方の詳細な説明

この記事では、Vueの自己ネストツリーコンポーネントの使い方を参考までに紹介します。具体的な内容は次...

グループ化されたクエリでのGROUP BYの使用とSQL実行順序の説明

SQL では、GROUP BY は SELECT の結果のデータをグループ化するために使用されます。...

VMware + Ubuntu18.04 による Hadoop クラスタ環境の構築に関するグラフィック チュートリアル

目次序文VMware クローン仮想マシン (準備、3 台の仮想マシンのクローン、1 台のマスター、2...

MySQL 8.0 でのチェック制約の実装

みなさんこんにちは。私は技術の話ばかりして髪を切らない先生のトニーです。今回はMySQL 8.0で追...

自作の Windows サーバーに egg アプリケーションを展開する方法 (画像とテキスト付き)

1. IEブラウザを使用してVPNにログインする 2. リモートログイン 3. サーバーに最新のn...