mysql 模糊查詢之特殊字符下劃線 _

  在開發中,測試提出了一個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(''); // 把數組轉成字符串

          }

         //  下面執行 你的數據庫操作 

         ...

   }

   希望能幫到各位小夥伴!

 

 

  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章