日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL 数据库 like 语句通配符模糊查询小结

發布時間:2025/3/8 数据库 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 查詢語句如何處理

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

  • 檢查通配符"?"的格式,注意是在英文輸入法下輸入,非中文問號;
  • 檢查 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 中對模糊查詢的操作以及不同關鍵字的區分。代碼之路漫漫,望諸君細致。


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

    總結

    以上是生活随笔為你收集整理的MySQL 数据库 like 语句通配符模糊查询小结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。