且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

mysql 模糊查询下划线

更新时间:2022-05-25 17:31:23


  在开发中,测试提出了一个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(''); // 把数组转成字符串

          }

         //  下面执行 你的数据库操作 

         ...

   }