關於模糊查詢的一些問題

2021-10-13 10:47:12 字數 1844 閱讀 5336

mysql 進行模糊查詢時,可使用內部函式 instr,替代傳統的 like 方式,並且速度更快。

instr(field, str) 函式,第乙個引數 field 是字段,第二個引數 str 是要查詢的串,返回串 str 的位置,沒找到就是0

先看以前用like方式的**:

"querylist" parametertype=

"com.ccb.inm.system.uass.entity.sysdatagroup" resultmap=

"sysdatagroupresultmap"

>

"selectsysdatagroup"

/>

<

if test=

"datagroupname != null and datagroupname != ''"

>

and data_group_name like concat

('%'

, #,

'%')

>

<

if test=

"datagroupalias != null and datagroupalias != ''"

>

and data_group_alias like concat

('%'

, #,

'%')

>

<

if test=

"enabled != null"

>

and enabled = #

>

<

if test=

"begintime != null"

>

<

!-- 開始時間檢索 --

>

and date_format

(create_time,

'%y%m%d'

)>

=date_format(#,

'%y%m%d'

)>

<

if test=

"endtime != null"

>

<

!-- 結束時間檢索 --

>

and date_format

(create_time,

'%y%m%d'

)<

=date_format(#,

'%y%m%d'

)>

<

/where>

<

/select>

這種方式使用mysql並對字段進行模糊搜尋時,如果系統對欄位的字元沒有做到限制,就會經常出現使用者輸入下劃線『』、百分號『%』此類萬用字元進行搜尋,如此執行往往會檢索到錯誤的結果集,下滑線『』會匹配單個任意字元,百分號『%』會匹配任意個任意字元。

解決方案

一,使用instr替換like

instr不會識別萬用字元,只會判斷第二個字串引數在第乙個字串中是否存在。確保此論是有據可依的,上官網。

select * from sys_data_group where instr

(data_group_name,

"%")

;

二,使用轉義字元『\』

'%'會被轉義為『%』,同理『_』會被轉義為『_』,在你的程式語言過濾使用者輸入的值,遇到萬用字元就在前面填上『\』

三,使用escape轉義

使用(這個用的不熟,暫且舉個例子吧)

示例

這種寫法的含義是字元『/』後面的字元都被當成是普通字元,而不再是萬用字元,這樣的做法回有問題,最後乙個『%』應該是被當做萬用字元處理才是正確的。

關於面試的一些問題

面試過程中,面試官會向應聘者發問,而應聘者的回答將成為面試官考慮是否接受他的重要依據。對應聘者而言,了解這些問題背後的 貓膩 至關重要。本文對面試中經常出現的一些典型問題進行了整理,並給出相應的回答思路和參 讀者無需過分關注分析的細節,關鍵是要從這些分析中 悟 出面試的規律及回答問題的思維方式,達到...

關於Labview的一些問題

第一章 虛擬儀器及 labview入門 1 虛擬儀器概述 虛擬儀器 virtual instrumention 是基於計算機的儀器。計算機和儀器的密切結合是目前儀器發展的乙個重要方向。粗略地說這種結合有兩種方式,一種是將計算機裝入儀器,其典型的例子就是所謂智慧型化的儀器。隨著計算機功能的日益強大以及...

關於DropDownList的一些問題

dropdownlist選擇後提示不能在dropdownlist選擇多項 原因在於drop.selected true 用的是item的引用,無法覆蓋上次操作 有2種方法 一種是直接drop.selectvalue value 選定指定資料 另一種是在操作前 呼叫clearselection 方法清...