主頁(yè) > 知識(shí)庫(kù) > MySQL 數(shù)據(jù)庫(kù) like 語(yǔ)句通配符模糊查詢小結(jié)

MySQL 數(shù)據(jù)庫(kù) like 語(yǔ)句通配符模糊查詢小結(jié)

熱門標(biāo)簽:信陽(yáng)穩(wěn)定外呼系統(tǒng)運(yùn)營(yíng)商 南通自動(dòng)外呼系統(tǒng)軟件 廣東人工電話機(jī)器人 芒果電話機(jī)器人自動(dòng)化 湖南人工外呼系統(tǒng)多少錢 石家莊電商外呼系統(tǒng) 百度地圖圖標(biāo)標(biāo)注中心 申請(qǐng)外呼電話線路 日照旅游地圖標(biāo)注

MySQL 報(bào)錯(cuò):Parameter index out of range (1 > number of parameters, which is 0)——MySQL 數(shù)據(jù)庫(kù) like 語(yǔ)句通配符模糊查詢小結(jié)

前言 今天在使用MySQL語(yǔ)句執(zhí)行增刪改查操作時(shí),控制臺(tái)報(bào)出了以下錯(cuò)誤:Parameter index out of range (1 > number of parameters, which is 0)。翻譯過(guò)來(lái)意思就是:查到結(jié)果數(shù)據(jù)為1,真實(shí)值應(yīng)為0,參數(shù)越界,產(chǎn)生錯(cuò)誤。如此也就明確了我們具體出錯(cuò)的地方——參數(shù),即對(duì)于通配符"?"的處理。本文分別對(duì)執(zhí)行普通 SQL 語(yǔ)句以及使用 like 語(yǔ)句進(jìn)行通配符模糊查詢遇到本錯(cuò)誤進(jìn)行了剖析,并給出解決方案。


一、分析 SQL 語(yǔ)句

1、普通 SQL 語(yǔ)句的查詢分析

首先,我們來(lái)分析一下我之前使用的 SQL 語(yǔ)句:

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

說(shuō)明:我們直接使用通配符"?"來(lái)代替參數(shù),使用 Spring 框架的 JdbcTemplate 執(zhí)行增刪改查操作。在這里是沒(méi)有任何問(wèn)題的。

2、普通 SQL 查詢語(yǔ)句如何處理

如果在這里出錯(cuò),請(qǐng)按照如下方式進(jìn)行解決:

檢查通配符"?"的格式,注意是在英文輸入法下輸入,非中文問(wèn)號(hào);檢查 SQL 語(yǔ)句,使用通配符傳遞的參數(shù)是不加引號(hào)的,比如下面的就是錯(cuò)誤的:

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

3、使用 like 通配符模糊查詢語(yǔ)句分析

同理,我們依舊采用上面的方式進(jìn)行模糊查詢操作,來(lái)看一下出錯(cuò)的 SQL 語(yǔ)句:

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

執(zhí)行結(jié)果報(bào)錯(cuò)Parameter index out of range (1 > number of parameters, which is 0)。

結(jié)果分析:查到結(jié)果數(shù)據(jù)為1,真實(shí)值應(yīng)為0,參數(shù)越界,產(chǎn)生錯(cuò)誤。

我們明確如下語(yǔ)句是沒(méi)有任何問(wèn)題的:

String sql = select * from tab_route where rname like '%張%';

如此也就明確了我們具體出錯(cuò)的地方——參數(shù),即對(duì)于 like 語(yǔ)句中通配符"?"的處理。

二、like 語(yǔ)句使用通配符模糊查詢剖析

1、like 語(yǔ)句的應(yīng)用場(chǎng)景

使用 like 通配符進(jìn)行模糊查詢是我們?cè)陧?xiàng)目中常遇到的,比如在搜索框中對(duì)于數(shù)據(jù)的模糊查詢。

2、模糊查詢剖析

在 SQL 語(yǔ)句中無(wú)法直接對(duì)'%?%'進(jìn)行解析,所以我們需要對(duì)連接的字符串進(jìn)行處理,使用動(dòng)態(tài)拼接concat()方法將'%?%'中的內(nèi)容進(jìn)行連接,然后再執(zhí)行增刪改查操作。

concat(str1,str2,str3...)會(huì)生成一個(gè)新的字符串

3、正確語(yǔ)句

String sql = "select count(*) from tab_route where rname like concat('%',?,'%')";

三、MyBatis like 模糊查詢及關(guān)鍵字區(qū)分

在 MyBatis 中使用 like 模糊查詢,應(yīng)注意關(guān)鍵字為:#{str},查詢子句為:

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

而如果添加排序字段,應(yīng)注意關(guān)鍵字為:${str},查詢子句為:

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

總結(jié) 本文分別對(duì)執(zhí)行普通 SQL 語(yǔ)句以及使用 like 語(yǔ)句進(jìn)行通配符模糊查詢遇到錯(cuò)誤進(jìn)行了剖析,并給出相應(yīng)解決方案。同時(shí)補(bǔ)充了在 MyBatis 中對(duì)模糊查詢的操作以及不同關(guān)鍵字的區(qū)分。代碼之路漫漫,望諸君細(xì)致。

到此這篇關(guān)于MySQL 數(shù)據(jù)庫(kù) like 語(yǔ)句通配符模糊查詢小結(jié)的文章就介紹到這了,更多相關(guān)MySQL 模糊查詢like內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MySQL查詢重寫插件的使用
  • 一篇文章弄懂MySQL查詢語(yǔ)句的執(zhí)行過(guò)程
  • Python使用sql語(yǔ)句對(duì)mysql數(shù)據(jù)庫(kù)多條件模糊查詢的思路詳解
  • 淺談pymysql查詢語(yǔ)句中帶有in時(shí)傳遞參數(shù)的問(wèn)題
  • MySQL模糊查詢語(yǔ)句整理集合
  • mysql語(yǔ)句查詢用戶權(quán)限過(guò)程詳解
  • MySQL常用SQL語(yǔ)句總結(jié)包含復(fù)雜SQL查詢
  • SQL語(yǔ)句執(zhí)行深入講解(MySQL架構(gòu)總覽->查詢執(zhí)行流程->SQL解析順序)
  • MySQL 重寫查詢語(yǔ)句的三種策略

標(biāo)簽:公主嶺 沈陽(yáng) 惠州 天津 呼和浩特 阿里 合肥 牡丹江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL 數(shù)據(jù)庫(kù) like 語(yǔ)句通配符模糊查詢小結(jié)》,本文關(guān)鍵詞  MySQL,數(shù)據(jù)庫(kù),like,語(yǔ)句,通配符,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL 數(shù)據(jù)庫(kù) like 語(yǔ)句通配符模糊查詢小結(jié)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于MySQL 數(shù)據(jù)庫(kù) like 語(yǔ)句通配符模糊查詢小結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章