MySQL データベースのステートメント ワイルドカード ファジー クエリの概要

MySQL データベースのステートメント ワイルドカード ファジー クエリの概要

MySQL エラー: パラメータ インデックスが範囲外です (1 > パラメータ数、つまり 0) - MySQL データベースのステートメント ワイルドカード ファジー クエリの概要

はじめに 今日、MySQL ステートメントを使用して追加、削除、変更、およびクエリ操作を実行すると、コンソールに次のエラーが報告されました: パラメータ インデックスが範囲外です (1 > パラメータ数、つまり 0)。翻訳すると、結果データは 1、真の値は 0 であるはず、パラメータは範囲外であり、エラーが発生することを意味します。これにより、どこで間違いを犯したか、つまりパラメータ、つまりワイルドカード「?」の処理が明らかになります。この記事では、一般的な SQL ステートメントを実行するときや、ワイルドカード ファジー クエリに like ステートメントを使用するときに発生するエラーを分析し、解決策を示します。

ここに画像の説明を挿入


1. SQL文を分析する

1. 一般的なSQL文のクエリ分析

まず、以前使用した SQL ステートメントを分析してみましょう。

文字列 sql = "tab_route から count(*) を選択します (cid = ?");

: ワイルドカード"?"を直接使用してパラメータを置き換え、Spring フレームワークの JdbcTemplate を使用して追加、削除、変更、およびクエリ操作を実行します。ここに問題はありません。

2. 一般的なSQLクエリ文の処理方法

ここでエラーが発生した場合は、次のように解決してください。

ワイルドカード"?"の形式を確認してください。これは中国語の疑問符ではなく、英語の入力方法で入力されていることに注意してください。SQL ステートメントを確認してください。ワイルドカードを使用して渡されるパラメータは引用符で囲まれていません。たとえば、次の例は間違っています。

文字列 sql = "cid = '?' の場合、tab_route から count(*) を選択します";

3. ワイルドカードのようなあいまいクエリステートメント分析を使用する

同様に、上記の方法を使用してファジー クエリ操作を実行し、失敗する SQL ステートメントを確認します。

文字列 sql = "select count(*) from tab_route where rname like '%?%';

実行結果はエラーです: Parameter index out of range (1 > number of parameters, which is 0)

結果分析: 結果データは 1 で、真の値は 0 である必要があり、パラメータが範囲外であるため、エラーが発生します。

以下の記述には問題がないことを明確にします。

文字列 sql = select * from tab_route where rname like '%张%';

これにより、どこで間違いを犯したかが明確になります。つまり、パラメータ、つまり、like ステートメント内のワイルドカード"?"の処理です

2. 類似文におけるワイルドカードを使用したファジークエリの分析

1. 類似ステートメントの適用シナリオ

ワイルドカード「like」を使用してあいまいクエリを実行することは、検索ボックス内のデータに対するあいまいクエリなど、プロジェクトでよく発生するものです。

2. あいまいクエリ分析

SQL ステートメントで'%?%'直接解析することはできないため、連結された文字列を処理し、動的連結concat()メソッドを使用して'%?%'の内容を連結してから、追加、削除、変更、およびクエリ操作を実行する必要があります。

concat(str1, str2, str3...)は新しい文字列を生成します

3. 正しい文章

文字列 sql = "tab_route から count(*) を選択し、rname を concat('%',?,'%') のように指定します";

3. MyBatisのようなあいまいなクエリとキーワードの区別

MyBatis でファジー クエリを使用する場合、キーワードは#{str}であり、クエリ句は次のようになることに注意してください。

concat('%',#{name},'%'); のように名前が付けられたテーブルから * を選択します。

並べ替えフィールドを追加する場合、キーワードは${str}であり、クエリ句は次のようになることに注意してください。

select * from table where name like concat('%',#{name},'%') order by ${id};

概要 この記事では、通常の SQL ステートメントを実行するとき、およびワイルドカード ファジー クエリに like ステートメントを使用するときに発生するエラーを分析し、対応する解決策を示します。同時に、MyBatis でのあいまいクエリの操作と異なるキーワードの区別が補足されます。コーディングまでの道のりは長いので、気をつけていただければと思います。

ここに画像の説明を挿入

これで、MySQL データベースのようなステートメントのワイルドカード ファジー クエリの概要に関するこの記事は終了です。より関連性の高い MySQL ファジー クエリのようなコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL ファジークエリの使用法 (通常、ワイルドカード、組み込み関数)
  • Mysql | ワイルドカード(%、_ など)を使用したファジークエリの詳細な説明
  • MySQL でのワイルドカードを使用したファジークエリの実装に関する簡単な説明
  • MySQL ファジークエリにおけるワイルドカードエスケープについての簡単な説明
  • MYSQL 必読ノート 第 8 章: フィルタリングにワイルドカードを使用する
  • MySQLでワイルドカードを使用する際の注意点
  • MySql のファジークエリワイルドカードの使用に関する詳細な紹介
  • mysql 正規表現 LIKE ワイルドカード
  • mysql ワイルドカード (sql 高度なフィルタリング)

<<:  Web プロジェクト開発における 2 つのトークン理由とサンプル コードの分析

>>:  Nginx のパフォーマンスを向上させるための提案

推薦する

Tencent Cloud 上で Hadoop 3.x 疑似クラスターを構築する方法を説明します

1. 環境整備CentOS Linux リリース 7.5.1804 (コア)インストールフォルダを作...

VS2019をMySQLデータベースに接続するプロセスと一般的な問題の概要

今日の午後からVS2019をMySQLで使えるのではないかと思い、いろいろ環境構築を始めました。プロ...

MySQL マスタースレーブレプリケーション 読み書き分離の設定方法の詳細説明

1. 説明前回は、MySQL のインストールと構成、MySQL ステートメントの使用、MySQL デ...

Linuxの貼り付けコマンドの使い方

01. コマンドの概要貼り付けコマンドは各ファイルを列ごとに結合します。これは、2 つの異なるファイ...

Vue.jsはコンポーネントを通じてアイコンを処理します

アイコン処理ソリューションこの記録の目的は、element-plus 以外のアイコンをコンポーネント...

重複したMySQLテーブルをマージして削除する簡単な方法

シナリオ:クロールされたデータは、別のメインテーブルと同じ構造を持つデータテーブルを生成するため、マ...

Vue+SSMは画像アップロードのプレビュー効果を実現します

現在の要件は、ファイルのアップロード ボタンがあることです。ボタンをクリックすると、アップロードする...

10分でCSS3グリッドレイアウトを理解する

基本的な紹介前回の記事では、CSS3 のフレックスボックスを紹介しました。今日は、CSS3 のもう ...

Linux および Unix サーバーのセキュリティを強化する方法

ネットワーク セキュリティは非常に重要なトピックであり、サーバーはネットワーク セキュリティにおける...

CSS3 で虫眼鏡効果を模倣するいくつかの方法の原理の分析

記事のタイトルが「模造虫眼鏡」なのはなぜですか?今日お話ししたいのは、一般的に言われているような、マ...

Windows Server 2008 R2 マルチユーザー リモート デスクトップ接続ライセンス

仕事ではリモート サーバーが必要になることが多く、次の 2 つの問題に遭遇することがよくあります。 ...

Linux の crw、brw、lrw などのファイル属性は何ですか?

ファイルとは何ですか?すべてのファイルは実際には文字列のストリームですが、適切な解析方法を使用すると...

Navicateを使用してAlibaba Cloud Server上のMySQLに接続する

1. まず、サーバーの mysql にアクセスして権限を変更します。 GRANT オプション付きで、...

docker mysqlの起動時に初期化SQLを実行する

1.Mysqlイメージを取得するdocker pull mysql:5.7 2. MySQLイメージ...

MySQL 5.7.27 のインストールと設定方法のグラフィックチュートリアル

MySQL 5.7.27の詳細なダウンロード、インストール、および構成チュートリアルは参考までに、具...