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

推薦する

JSは円形のプログレスバーのドラッグとスライドを実装します

この記事の例では、円形のプログレスバーのドラッグアンドスライドを実現するための具体的なJSコードを紹...

MySQL インポートおよびエクスポートのバックアップの詳細

目次1. MySQLのバックアップタイプの詳細な説明1. バックアップがデータベースに与える影響に基...

MySQL水平および垂直テーブル変換操作の実装方法

この記事では、例を使用して、MySQL の水平テーブルと垂直テーブル間の変換操作を実装する方法を説明...

Nginx ロケーション設定のチュートリアル (ゼロから)

基礎位置の一致順序は、「最初に正規表現に一致し、次に共通表現に一致」です。実際のロケーションの一致順...

Vue+elementuiはドロップダウンテーブルの複数選択と検索機能を実現します

この記事では、ドロップダウンテーブルの複数選択と検索を実現するためのvue+elementuiの具体...

Vue プロジェクトで mock.js を使用するための完全な手順

Vue プロジェクトで mock.js を使用する開発ツールの選択: Vscode 1. コマンドラ...

MySQL スライディングオーダー問題の原理と解決の例分析

この記事では、例を使用して、MySQL スライディング順序問題の原理と解決方法を説明します。ご参考ま...

ウェブページのメモリ使用量とCPU使用量を削減する方法

一部の Web ページは大きく見えなくても開くのに非常に時間がかかる場合があります。一方、他の We...

MySQL エンコーディング utf8 および utf8mb4 utf8mb4_unicode_ci および utf8mb4_general_ci

参考: MySQL 文字セットの概要utf8mb4 は MySQL 8.0 のデフォルトの文字セット...

Vueにおける混合継承の詳細な説明

目次混合継承の影響: 1. 継承Vue.extend メソッド​プロパティを拡張する2. ミックスイ...

Javascriptの基礎を学ぶための10の重要な質問

目次1. Javascript とは何ですか? 2. DOMとは何か3. JSコードの実行方法4. ...

HTML独習の旅(I)基本要素と属性の練習(自分でコードを書く)

私は W3school のチュートリアルに従いました。チュートリアルはとても良いと思います。各セクシ...

Vueデータ変更検出の基本的な実装の簡単な分析

目次1. オブジェクトの変更検出2. オブジェクトに関する質問配列変更検出3.1 背景3.2 実装I...

JavaScript の寄生的構成継承についての簡単な説明

コンポジション継承組み合わせ継承は、疑似古典的継承とも呼ばれます。これは、昨日説明したプロトタイプ ...

MySQL 8.0.18 はクローンプラグインを使用して MGR 実装を再構築します

3 ノード MGR 内の 1 つのノードに異常があり、MGR クラスターに再度追加する必要があるとし...