在開發中,測試提出了乙個bug,在某搜尋中,搜尋 _,結果把不包含下劃線的內容也查了出來!這是什麼問題呢?今天特此記錄一下,順便給大家分享下!
原sql:select * from table where condition like '%_%';
結果: 搜尋出來的是全部。
原來,在mysql 中,下劃線 _ 代表 全部 基本上等同於 *。
解決方案:
對sql 用 \ 進行轉義:
最終達到的sql效果 :select * from table where condition like '%\_%';
在此之前,在程式中對該關鍵字進行轉義。
方法如下:(我接觸的是nodejs,此處就用js來表達);
const search = function(str){
if(str){
let astr = array.from(str); // 將字元轉成陣列
for(let i = 0;i < astr.length; i++){ // 遍歷陣列
if(astr[i]=='_'){ // 如果檢測到下劃線
astr[i] = '\\_'; // 此處需要轉譯 \_ 所以用兩個\
str = astr.join(''); // 把陣列轉成字串
// 下面執行 你的資料庫操作
...
希望能幫到各位小夥伴!
cad模糊查詢符號 SQL 模糊查詢之特殊字元
1.sql like對時間查詢 時間格式的資料為各種各樣,不方便查詢。在使用like模糊查詢時,先將資料轉換為統一的格式,這樣在使用like查詢時就方便多了。2.sql like對特殊字元 在sql查詢過程中,動態sql,需將字元資料的單引號 改為兩個單引號 而在模糊查詢中,需使用萬用字元來匹配資料...
MySQL之模糊查詢
一般而言,在 mysql 中使用 sql select 命令來讀取資料,同時可以在 select 語句中使用 where 子句來獲取指定的記錄。where 子句中可以使用等號 來設定獲取資料的條件,但是有時候我們需要獲取字段含有某些字元的所有記錄,這時就需要在 where 子句中使用 sql lik...
Mysql之模糊查詢
目錄mysql中的模糊檢索方法,總結了有以下幾種,下面我們來簡單介紹一下 建立表 mysql create table if not exists wuxia id int unsigned auto increment,name varchar 10 not null,primary key id...