MySQL 模糊查詢:MySQL 數據庫 like 語句通配符模糊查詢小結

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.1、普通 SQL 語句的查詢分析
    • 1.2、普通 SQL 查詢語句如何處理
    • 1.3、使用 like 通配符模糊查詢語句分析
  • 二、like 語句使用通配符模糊查詢剖析
    • 2.1、like 語句的應用場景
    • 2.2、模糊查詢剖析
    • 2.3、正確語句
  • 三、MyBatis like 模糊查詢及關鍵字區分
  • 總結


前言

今天在使用 MySQL 語句執行增刪改查操作時,控制臺報出了以下錯誤:Parameter index out of range (1 > number of parameters, which is 0)。翻譯過來意思就是:查到結果數據為 1,真實值應為 0,參數越界,產生錯誤。如此也就明確了我們具體出錯的地方——參數,即對于通配符"?"的處理。本文分別對執行普通 SQL 語句以及使用 like 語句進行通配符模糊查詢遇到本錯誤進行了剖析,并給出解決方案。

在這里插入圖片描述


一、分析 SQL 語句

1.1、普通 SQL 語句的查詢分析

首先,我們來分析一下我之前使用的 SQL 語句:

String sql = "select count(*) from tab_route where cid = ?";

說明:我們直接使用通配符"?"來代替參數,使用 Spring 框架的 JdbcTemplate 執行增刪改查操作。在這里是沒有任何問題的。

1.2、普通 SQL 查詢語句如何處理

如果在這里出錯,請按照如下方式進行解決:

  1. 檢查通配符"?"的格式,注意是在英文輸入法下輸入,非中文問號;
  2. 檢查 SQL 語句,使用通配符傳遞的參數是不加引號的,比如下面的就是錯誤的:
String sql = "select count(*) from tab_route where cid = '?'";

1.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 語句使用通配符模糊查詢剖析

2.1、like 語句的應用場景

使用 like 通配符進行模糊查詢是我們在項目中常遇到的,比如在搜索框中對于數據的模糊查詢。

2.2、模糊查詢剖析

在 SQL 語句中無法直接對'%?%'進行解析,所以我們需要對連接的字符串進行處理,使用動態拼接concat()方法將'%?%'中的內容進行連接,然后再執行增刪改查操作。

concat(str1,str2,str3...)//會生成一個新的字符串

2.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 中對模糊查詢的操作以及不同關鍵字的區分。代碼之路漫漫,望諸君細致。

在這里插入圖片描述


我是白鹿,一個不懈奮斗的程序猿。望本文能對你有所裨益,歡迎大家的一鍵三連!若有其他問題、建議或者補充可以留言在文章下方,感謝大家的支持!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/530733.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530733.shtml
英文地址,請注明出處:http://en.pswp.cn/news/530733.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

內網擊穿之 HTTP 穿透:網站沒上線?如何讓全世界的人都可以訪問你本地的網站?

文章目錄前言一、內網穿透原理與工具介紹1.1、內網穿透工作原理1.2、內網穿透工具介紹二、啟動內網穿透工具2.1、命令及配置介紹2.2、查看映射信息三、進行訪問測試3.1、遠程訪問本地站點資源3.2、關閉內網穿透總結前言 對于大多數程序員來說,網站一經開發測試后&am…

SSM 整合 3:一個 Spring 入門程序帶你來了解什么是控制反轉(IoC)/依賴注入(DI)?

文章目錄 前言一、使用 Eclipse 創建動態 Web 項目并導入所需 jar 包二、創建接口 TestDao 和實現類2.1、創建接口 TestDao2.2、創建接口的實現類 TestDaoImpl三、創建 Spring 配置文件 applicationContext.xml3.1、如何從官方文檔找配置文件約束信息四、創建測試類并輸出運行結…

軟件設計原則:內聚、耦合有哪幾種類型?內聚度、耦合度如何比較?

文章目錄前言一、何為內聚?1.1、7 種內聚類型及其描述二、何為耦合?2.1、7 種耦合類型及其描述總結前言 高內聚、低耦合是我們在軟件設計過程中必須遵循的一個重要原則,在整個軟件工程中占有很大的比重。而對于內聚和耦合你還是僅僅局限于“高…

數據庫管理工具:如何使用 Navicat Premium 轉儲(導出)和運行(導入)*.sql 文件?

文章目錄前言一、轉儲(導出)數據庫 SQL 文件1.1、選擇“轉儲 SQL 文件”1.2、選擇導出文件存放位置1.3、查看轉儲 SQL 文件界面1.4、查看 SQL 輸出文件1.5、查看輸出文件詳情信息二、運行(導入)數據庫 SQL 文件2.1、新建數據庫2.2…

JSP 編譯原理:JSP 是 Servlet?如何用 Eclipse 查看 JSP 編譯生成的 Servlet 源文件?

文章目錄前言一、JSP 文件編譯流程原理二、創建并運行待測試 JSP 頁面三、查找 JSP 編譯文件輸出位置3.1、打開動態項目運行配置3.2、查看 JSP 編譯文件輸出位置3.3、查看 JSP 編譯輸出文件四、JSP 編譯輸出 Servlet 的論證五、訪問 JSP 文件的流程總結前言 相信大家都了解&…

MVC 模式/Servlet/JSP 編譯原理剖析:Servlet 組件到底屬于 MVC 模式的哪一層?

文章目錄前言一、回憶什么是 MVC 模式?1.1、Model、View、Controller 組件介紹1.2、明確 View 與 Controller 組件區別二、什么是 Servlet?2.1、Servlet 的組件定義2.2、Servlet 組件處于 Controller 層?三、老師說 Servlet 是 View 層的&…

操作系統原理:進程 PV 操作如何計算?全網最全三種前驅圖計算類型總結

文章目錄前言一、PV 操作定義1.1、P 操作定義1.2、V 操作定義二、串聯進程(單線前驅圖)2.1、什么是單線前驅圖?2.2、如何計算單線前驅圖的 PV?2.2.1、計算前驅節點 PV2.2.2、計算中間節點 PV2.2.3、計算尾節點 PV三、并聯進程&…

Spring 容器:三種方式解決 Resource leak: ‘applicationContext‘ is never closed 問題

文章目錄前言一、Spring 容器警告產生的場景二、Spring 容器未關閉后果分析2.1、肉眼可見的警告2.2、導致的內存泄漏2.2.1、什么是內存泄漏?2.2.2、如何判斷內存泄漏?2.2.3、Java 中的 GC(垃圾回收)2.2.4、Java 中會導致內存泄漏的…

SSM 整合 4:Spring IoC 容器基于的兩個重要接口 BeanFactory 和 ApplicationContext

文章目錄 前言一、BeanFactory 接口1.1、加載 Spring 配置文件創建 BeanFactory 接口實例1.2、開發中的運用以及使用說明二、ApplicationContext 接口2.1、ClassPathXmlApplicationContext 創建接口實例2.2、FileSystemXmlApplicationContext 創建接口實例2.3、通過 Web 服務器…

SRA 案例:關于華為開發者聯盟基礎服務文檔內容的改進建議(華為開發者聯盟文檔深度體驗官)

文章目錄前言一、文檔中心的外鏈跳轉問題1.1、問題描述1.2、造成的問題1.3、改進建議二、圖片失真和無法放大查看問題2.1、問題描述2.2、造成的問題2.3、改進建議三、個別 SDK 詞匯缺少必要的說明3.1、問題描述3.2、造成的問題3.3、改進建議四、郵箱信息的優化4.1、問題描述4.2…

騰訊位置服務:有何優勢?如何使用平臺創建應用和服務調用的 Key?

文章目錄前言一、騰訊位置服務的優勢1.1、提供豐富的地圖產品1.2、提供行業解決方案1.3、提供其他生態維度的支持1.4、海量的數據基礎1.5、豐富的開發文檔二、初識騰訊位置服務2.1、用戶的注冊與登錄(附專屬邀請碼)2.2、開發者信息的完善三、創建服務平臺…

畢業生當頭一棒?憶本科四年,高校畢業生與就業單位基本要求差多少?工作還是考研?

文章目錄前言一、大學本科前兩年的生活1.1、庸庸碌碌、中規中矩1.2、收獲了愛情二、大三的改變2.1、學會自律2.2、學會自我總結2.3、眼光要具有前瞻性三、畢業答辯3.1、個人設計答辯3.2、團隊設計答辯四、南京之行4.1、銘記歷史,感恩先輩4.2、加強自我認知與提升五、…

Gitee 答疑:為什么從 Gitee 平臺 Pull 代碼到 STS/Eclipse 后文件亂碼?逐步排查

文章目錄前言一、產生亂碼場景1.1、錯誤描述1.2、解決思路二、解決方式2.1、檢查 Git 平臺上的源碼2.2、Git 的運行原理2.3、修改 IDE 的文本編碼格式2.4、重新打開目的文件問題解決2.5、仍存在問題看這里(重新拉區合并)總結前言 我們從 Gitee 平臺 Pull…

flash 異常修復:QQ 的 flash 圖標顯示異常?QQ 秀、表情加載異常?一招解決

文章目錄前言一、產生錯誤場景1.1、flash 圖標顯示異常1.2、解決思路二、安裝合適版本的 Flash Player2.1、選擇合適版本的 Flash Player2.2、安裝 Flash Player三、重啟 QQ 客戶端四、flash 動畫加載異常4.1、動畫加載異常原因分析4.2、下載安裝 flash 修復工具4.3、使用 Flas…

電腦廣告多?Windows 自帶惡意軟件刪除工具還不會使用?有必要安裝殺毒軟件嗎?

文章目錄前言一、啟動惡意軟件刪除工具二、掃描類型的選擇三、啟動軟件掃描四、惡意軟件刪除工具的說明五、對于惡意軟件處理的建議總結前言 可能有些小伙伴發現,哎?為什么我的電腦彈窗廣告這么多?難不成小視頻看多了?電腦中毒了&…

《軟件項目管理(第二版)》第 8 章——項目團隊與干系人 重點部分總結

文章目錄 前言一、簡答題二、論述題總結前言 學習了項目的開發與發布之后,我們就可以單獨對一個項目進行開發了,但是在企業中開發中,除了編碼之外,還需要項目管理、團隊協作開發等,這就是軟件項目管理板塊要學習的內容。本文是對《軟件項目管理(第二版)》第 8 章——項目…

《軟件項目管理(第二版)》第 7 章——項目風險管理 重點部分總結

文章目錄 前言一、單選題二、填空題三、簡答題四、論述題總結前言 學習了項目的開發與發布之后,我們就可以單獨對一個項目進行開發了,但是在企業中開發中,除了編碼之外,還需要項目管理、團隊協作開發等,這就是軟件項目管理板塊要學習的內容。本文是對《軟件項目管理(第二…

《軟件項目管理(第二版)》第 6 章——項目質量管理 重點部分總結

文章目錄 前言一、單選題二、判斷題三、簡答題總結前言 學習了項目的開發與發布之后,我們就可以單獨對一個項目進行開發了,但是在企業中開發中,除了編碼之外,還需要項目管理、團隊協作開發等,這就是軟件項目管理板塊要學習的內容。本文是對《軟件項目管理(第二版)》第 6…

《軟件項目管理(第二版)》第 5 章——項目進度和成本管理 重點部分總結

文章目錄 前言一、填空題二、簡答題三、論述題總結前言 學習了項目的開發與發布之后,我們就可以單獨對一個項目進行開發了,但是在企業中開發中,除了編碼之外,還需要項目管理、團隊協作開發等,這就是軟件項目管理板塊要學習的內容。本文是對《軟件項目管理(第二版)》第 5…

《軟件項目管理(第二版)》第 1 章——概述 重點部分總結

文章目錄 前言一、填空題二、判斷題三、簡答題總結前言 學習了項目的開發與發布之后,我們就可以單獨對一個項目進行開發了,但是在企業中開發中,除了編碼之外,還需要項目管理、團隊協作開發等,這就是軟件項目管理板塊要學習的內容。本文是對《軟件項目管理(第二版)》第 1…