最近在检测天气预报15天查询网 站(http://tqybw.net)时的URL时,发现页面中有很些404页,分析发现,是请求地址的能参数中多了下划线“_”,而rewrite规 则中并没有配这样的规则,数据库表中出现“_”,并不多,想找出来把下划线去掉,按照正常的查找,结果返回记录不正常,找了下资料,原来下划线在like 中有着特殊的含义,它表示匹配任意一个字符。因此在查询包含下划线内容的时候需要“特殊关照”一下。

以下是分析及解决办法:

使用like语句的错误查询

mysql> select * from t where x like '%_%';

返回全部的记录,不是想要的结果!

为什么错误?

因为在like语句中的下划线的含义是“任意一个字符”,类似“%”代表匹配任意多个字符的。

4.正确的查询方法

能想到的有如下两种方法。

1)第一种方法使用escape转义

mysql> select * from t where x like '%\_%' escape '\';

返回包含有"_"的记录,正确

escape的内容可以任意,只要保证前后一致即可。

mysql> select * from t where x like '%|_%' escape '|';

返回包含有"_"的记录,正确

mysql>  select * from t where x like '%*_%' escape '*';

返回包含有"_"的记录,正确

2)使用instr函数辅助判断

使用instr函数判断字段中是否包含“_”,如果包含返回值是非零的,如果不包含则返回值是零。

mysql> select * from t where instr(x,'_')!=0;

SQL搜索下划线,like中不能匹配下划线的问题的更多相关文章

  1. Linq to Sql:N层应用中的查询(下) : 根据条件进行动态查询

    原文:Linq to Sql:N层应用中的查询(下) : 根据条件进行动态查询 如果允许在UI层直接访问Linq to Sql的DataContext,可以省去很多问题,譬如在处理多表join的时候, ...

  2. sql server中like无法匹配下划线问题解决方案

    在sql server的like中下划线类似于通配符%,所以无法使用like '%_%'来匹配下划线,可以通过以下两种办法实现匹配下划线 1.使用转义字符escape like '%\_%' esca ...

  3. 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效

    数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...

  4. excel导入sql server 文本被截断,或者一个或多个字符在目标代码页中没有匹配项 错误处理

    excel导入sql server 文本被截断,或者一个或多个字符在目标代码页中没有匹配项 错误处理方法: 方案1:修改注册表 出现文本被截断的原因是SQL Server的导入导出为了确定数据表的字段 ...

  5. React-Native 之 GD (二十)removeClippedSubviews / modal放置的顺序 / Android 加载git图\动图 / 去除 Android 中输入框的下划线 / navigationBar

    1.removeClippedSubviews 用于提升大列表的滚动性能.需要给行容器添加样式overflow:’hidden’.(Android已默认添加此样式)此属性默认开启 这个属性是因为在早期 ...

  6. python中那些双下划线开头得函数和变量--转载

    Python中下划线---完全解读     Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __x ...

  7. MySQL查询LIKE如何匹配下划线 通配符转义

    MySQL查询时使用LIKE匹配下划线,您会发现连查询“%A_B%”时会出现“%A B%”和“%AB%”也查询出来了,这是因为下划线也被当作特殊字符,做了任意匹配转换了,所以,要想匹配下划线,那么就需 ...

  8. json字符串中key值下划线命名转换为驼峰命名

    json字符串中key值下划线命名转换为驼峰命名: 例如: 原json串: String json= "{'user_name':'ok','user_sex':0,'object_info ...

  9. python python中那些双下划线开头的那些函数都是干啥用用的

    1.写在前面 今天遇到了__slots__,,所以我就想了解下python中那些双下划线开头的那些函数都是干啥用用的,翻到了下面这篇博客,看着很全面,我只了解其中的一部分,还不敢乱下定义. 其实如果足 ...

随机推荐

  1. mysql导入出现MySQL Error 1153 - Got a packet bigger than 'max_allowed_packet' bytes

    解决办法: 就搞定了.

  2. Java Hour 56 Spring 和 Hibernate 的集成

    上一章节我们完成了一个简单的Spring 的试验品,这章要让Spring 上战场了,不要慌,步骤都是一样的. Spring 对 Hibernate 的支持是很多方面的,第一个战场是SessionFac ...

  3. .NET Framework 4.6的新东西

    我们知道.NET Framework 4.6即将随着Visual Studio 2015一同到来,目前依然是预览版.4.6和4,4.5,4.5.1和4.5.2是兼容的,也即安装4.6后会升级替代他们. ...

  4. mtr命令

    mtr 命令详解 一般在windows 来判断网络连通性用ping 和tracert,ping的话可以来判断丢包率,tracert可以用来跟踪路由,在Linux中有一个更好的网络连通性判断工具,它可以 ...

  5. Oracle基本常用命令

    一.ORACLE的启动和关闭 1.在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a.启动ORACLE系统 oracle>svrmgrl ...

  6. JVM的基本结构

    首先,当一个程序启动之前,它的class会被类装载器装入方法区,执行引擎读取方法区的字节码自适应解析,边解析就边运行(其中一种方式),然后pc寄存器指向了main函数所在位置,虚拟机开始为main函数 ...

  7. [LintCode] Word Break

    Given a string s and a dictionary of words dict, determine if s can be break into a space-separated ...

  8. 模拟 Codeforces Round #249 (Div. 2) C. Cardiogram

    题目地址:http://codeforces.com/contest/435/problem/C /* 题意:给一组公式,一组数据,计算得到一系列的坐标点,画出折线图:) 模拟题:蛮恶心的,不过也简单 ...

  9. POJ2186 Popular Cows(强连通分量)

    题目问一个有向图所有点都能达到的点有几个. 先把图的强连通分量缩点,形成一个DAG,那么DAG“尾巴”(出度0的点)所表示的强连通分量就是解,因为前面的部分都能到达尾巴,但如果有多个尾巴那解就是0了, ...

  10. 发送JS错误日志到服务器

    JS记录错误日志/捕捉错误 //onerror提供异常信息,文件路径和发生错误代码的行数的三个参数. window.onerror = function(e,url,index){ var msg = ...