mysql 模糊查询下划线-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

mysql 模糊查询下划线

简介: 下划线 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(''); // 把数组转成字符串

          }

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

         ...

   }

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章