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

推薦する

スクロールバーを非表示にしてコンテンツをスクロールする CSS サンプルコード

序文ページの HTML 構造にネストされたボックスが多数含まれている場合、ページに複数の垂直スクロー...

html2canvas で破線境界線を実装する例

html2canvas は、HTML 要素からキャンバスを生成するライブラリです。描画されるキャンバ...

React 高階コンポーネント HOC 使用方法の概要

HOCを紹介する一文高階コンポーネント (HOC) とは何ですか? 公式ドキュメントによると、「高階...

CentOS7 ファイアウォール操作コマンドの完全なリスト

目次インストール: 1. ファイアウォールの基本的な使い方2. ファイアウォールd-cmdを設定する...

動的なデジタル時計を実装するJavaScript

この記事では、JavaScriptで動的なデジタル時計を実装するための具体的なコードを参考までに紹介...

ウェブデザイナーが持つべき資質と能力

Web デザインは、インターネットの出現後に誕生した新興の周辺産業です。 Web ページは店頭のよう...

CentOS7.4 に MySQL 5.7.26 をインストールするための詳細なチュートリアル

CentOS にはデフォルトで MariaDB がインストールされていますが、これは MySQL の...

CSS3 で背景ぼかしを実現する 3 つの方法 (要約)

1. 通常の背景ぼかしコード: <スタイル> html, 体 { 幅: 100%; 高...

Vue+flaskで動画合成機能を実現(ドラッグ&ドロップアップロード)

目次ドラッグアンドドロップアップロードについては以前の記事で書きました。ファイルをアップロードするF...

crontab でスケジュールされたタスクが実行されない理由の概要

序文最近、仕事でいくつかの問題が発生しました。crontab でスケジュールされたタスクが実行されま...

Windows環境でのMySQL 8.0.13無料インストールバージョンの設定チュートリアル

目次圧縮ファイルをダウンロードするアドレス: https://dev.mysql.com/downl...

リンク更新ページと js 更新ページの使用例

1. リンクの使用方法:コードをコピーコードは次のとおりです。 <a href="j...

HTML に埋め込まれた MP4 形式のビデオが再生できないのはなぜですか?

次のコードは、私の test.html にあります。ビデオは、c:\test.html などの絶対パ...

Vue ページ状態の永続化の詳細な説明

目次コード:補充:要約する要件: 左のツリーと右のテーブル。組織ツリーでノードを選択した後、詳細ペー...

VMware で Nginx+KeepAlived クラスタ デュアルアクティブ アーキテクチャを展開する際の問題と解決策

序文負荷分散には nginx を使用します。アーキテクチャのフロントエンドまたは中間層として、トラフ...