MySQL 報錯:Parameter index out of range (1 > number of parameters, which is 0)——MySQL 資料庫 like 陳述句通配符模糊查詢小結
文章目錄
- MySQL 報錯:Parameter index out of range (1 > number of parameters, which is 0)——MySQL 資料庫 like 陳述句通配符模糊查詢小結
- 前言
- 一、分析 SQL 陳述句
- 1、普通 SQL 陳述句的查詢分析
- 2、普通 SQL 查詢陳述句如何處理
- 3、使用 like 通配符模糊查詢陳述句分析
- 二、like 陳述句使用通配符模糊查詢剖析
- 1、like 陳述句的應用場景
- 2、模糊查詢剖析
- 3、正確陳述句
- 三、MyBatis like 模糊查詢及關鍵字區分
- 總結
前言
今天在使用MySQL陳述句執行增刪改查操作時,控制臺報出了以下錯誤:Parameter index out of range (1 > number of parameters, which is 0),翻譯過來意思就是:查到結果資料為1,真實值應為0,引數越界,產生錯誤,如此也就明確了我們具體出錯的地方——引數,即對于通配符"?"的處理,本文分別對執行普通 SQL 陳述句以及使用 like 陳述句進行通配符模糊查詢遇到本錯誤進行了剖析,并給出解決方案,
一、分析 SQL 陳述句
1、普通 SQL 陳述句的查詢分析
首先,我們來分析一下我之前使用的 SQL 陳述句:
String sql = "select count(*) from tab_route where cid = ?";
說明:我們直接使用通配符"?"來代替引數,使用 Spring 框架的 JdbcTemplate 執行增刪改查操作,在這里是沒有任何問題的,
2、普通 SQL 查詢陳述句如何處理
如果在這里出錯,請按照如下方式進行解決:
- 檢查通配符
"?"的格式,注意是在英文輸入法下輸入,非中文問號; - 檢查 SQL 陳述句,使用通配符傳遞的引數是不加引號的,比如下面的就是錯誤的:
String sql = "select count(*) from tab_route where cid = '?'";
3、使用 like 通配符模糊查詢陳述句分析
同理,我們依舊采用上面的方式進行模糊查詢操作,來看一下出錯的 SQL 陳述句:
String sql = "select count(*) from tab_route where rname like '%?%';
執行結果報錯:Parameter index out of range (1 > number of parameters, which is 0),
結果分析:查到結果資料為1,真實值應為0,引數越界,產生錯誤,
我們明確如下陳述句是沒有任何問題的:
String sql = select * from tab_route where rname like '%張%';
如此也就明確了我們具體出錯的地方——引數,即對于 like 陳述句中通配符"?"的處理,
二、like 陳述句使用通配符模糊查詢剖析
1、like 陳述句的應用場景
使用 like 通配符進行模糊查詢是我們在專案中常遇到的,比如在搜索框中對于資料的模糊查詢,
2、模糊查詢剖析
在 SQL 陳述句中無法直接對'%?%'進行決議,所以我們需要對連接的字串進行處理,使用動態拼接concat()方法將'%?%'中的內容進行連接,然后再執行增刪改查操作,
concat(str1,str2,str3...)會生成一個新的字串
3、正確陳述句
String sql = "select count(*) from tab_route where rname like concat('%',?,'%')";
三、MyBatis like 模糊查詢及關鍵字區分
在 MyBatis 中使用 like 模糊查詢,應注意關鍵字為:#{str},查詢子句為:
select * from table where name like concat('%',#{name},'%');
而如果添加排序欄位,應注意關鍵字為:${str},查詢子句為:
select * from table where name like concat('%',#{name},'%') order by ${id};
總結
本文分別對執行普通 SQL 陳述句以及使用 like 陳述句進行通配符模糊查詢遇到錯誤進行了剖析,并給出相應解決方案,同時補充了在 MyBatis 中對模糊查詢的操作以及不同關鍵字的區分,代碼之路漫漫,望諸君細致,
感謝大家的支持,我是白鹿,一個不懈奮斗的程式猿,希望本貼能幫助到大家,歡迎大家的一鍵三連!如果還有什么問題、建議或者補充可以留言在帖子下方,給予更多人幫助!
更多資訊微信搜索公眾號【WDeerCode代碼圈】
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/172712.html
標籤:AI
下一篇:Oracle資料庫系列之基礎篇1
