`
lenxen
  • 浏览: 31282 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

SQL搜索下划线,like中不能匹配下划线的问题

阅读更多

 

最近在检测天气预报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 Server查询中的特殊字符处理

    如果你在`LIKE`模式中使用下划线,它会匹配任何单个字符。例如,`SELECT * FROM Table WHERE Column LIKE 'a_b'` 将匹配 'apple' 和 'able',但不会匹配 'abc'。 2. 百分号(%):百分号用于匹配任意数量的任意字符...

    浅谈Transact—SQL语句中LIKE的高级应用.pdf

    其中,LIKE关键字用于在WHERE子句中进行模式匹配,是模糊查询时常用的功能,可以配合通配符完成对字符型数据的搜索。本文档详述了LIKE语句在Transact-SQL中的高级应用,并通过实例展示了如何有效利用LIKE进行数据库...

    SQLLIKE用法.docx

    SQL LIKE 用法是 SQL 语言中一种常用的字符串匹配方式,用于在查询语句中搜索特定的字符串模式。然而,在使用 LIKE 操作符时,需要注意一些特殊的规则和处理方法,以下将详细介绍 SQL LIKE 用法的相关知识点。 1. ...

    Like-and-OrderBy.rar_sql like order by

    总结一下,LIKE和ORDER BY都是SQL查询中不可或缺的部分。LIKE提供了强大的字符串匹配功能,而ORDER BY则确保了查询结果的有序性。了解它们的用法和组合,能帮助我们在SQL查询中更加游刃有余。通过实际的数据库操作和...

    浅谈MySQL模糊查询中通配符的转义

    sql中经常用like进行模糊查询,而模糊查询就要用到百分号“%”,下划线“_”这些通配符,其中“%”匹配任意多个字符,“_”匹配单个字符。如果我们想要模糊查询带有通配符的字符串,如“60%”,“user_name”,就...

    SQL Server查询中特殊字符的处理方法

    在SQL Server中,查询语句可能会遇到各种特殊字符,这些字符在特定的上下文中具有特殊的含义,例如在LIKE操作中。处理这些特殊字符是确保SQL语句正确执行的关键。本篇将详细介绍如何处理SQL Server查询中的特殊字符...

    SQL中查询中使用通配符

    在SQL(Structured Query Language)中,通配符是用于模糊搜索和模式匹配的关键元素,使得用户可以在不完全知道确切数据的情况下查找数据。SQL通配符主要用于`LIKE`、`GLOB`、`REGEXP`等操作符中,帮助我们进行更...

    sqlserver 中charindex/patindex/like 的比较

    在SQL Server中,`CHARINDEX`、`PATINDEX`和`LIKE`是三种常见的文本搜索函数,它们在处理字符串查询时各有特点。下面将详细解释这些函数的工作原理、使用场景及性能差异。 `CHARINDEX`函数用于查找一个子字符串在另...

    Access采用sql语句与sql的区别

    在 Access 中执行 SQL 语句需要了解 Access 的 SQL 语法和特性,而在 SQL Server 中执行 SQL 语句需要了解 SQL Server 的 SQL 语法和特性。 例如,我们可以使用 Access 的 SQL 语句来查询 products 表中的数据: ``...

    delphi资源-Filter中的模糊过滤

    在BDE中实现模糊过滤时,需要使用星号`*`作为通配符,而不能使用`LIKE`关键字。这种匹配方式只允许向后匹配,例如`Fcode = '101*'`表示Fcode字段以"101"开头的所有记录。 ##### 2.2 ADO环境下的模糊过滤 相比之下...

    Delphi高级Like语句查询实例..rar

    在Delphi编程环境中,LIKE语句是用于在SQL查询中执行模式匹配的一种方式,它允许开发者根据特定的模式来搜索数据库中的数据。本教程将深入探讨Delphi中的高级LIKE语句查询实例,帮助你更好地理解和运用这一强大的...

    SQL语法查询(W3school)

    16. SQL 函数:如SQL avg()、SQL count()、SQL first()、SQL last()、SQL max()、SQL min()、SQL sum()、SQL GroupBy、SQL Having、SQL ucase()、SQL lcase()、SQL mid()、SQL len()、SQL round()、SQL now()、SQL ...

    SQL 通配符

    在SQL(结构化查询语言)中,通配符是一种强大的工具,用于在查询时匹配不完全确定的数据。它们允许用户模糊搜索,这对于数据挖掘、数据分析和日志查询等任务非常有用。下面我们将深入探讨SQL中的两种主要通配符:百...

    ibatis sql语句对条件中特殊字符% # 处理

    特别是在使用类似`LIKE`这样的操作符时,如果用户输入的数据中含有`%`、`_`或`#`等特殊字符,那么这些字符可能会被SQL解释器误认为是通配符或者特殊符号,导致查询结果不符合预期。本文将详细介绍如何在ibatis框架下...

    SQL 必知必会 6 - 用通配符进行过滤1

    在SQL中,`LIKE`操作符是用于在查询中执行模糊匹配的关键工具,它结合了通配符来帮助用户寻找符合特定模式的数据。本节主要介绍了三种常用的通配符:百分号`%`、下划线`_`以及方括号`[]`。 6.1 `LIKE`操作符 `LIKE`...

    PostgreSQL DBA认证 PGCE-E-092-中级SQL题目

    "PostgreSQL DBA认证 PGCE-E-092-中级SQL题目" PostgreSQL DBA认证 PGCE-E-092-中级SQL题目 PostgreSQL DBA认证PGCE-E-...在PostgreSQL中,SQL标识符和关键词可以以字母、下划线或美元符号开头,但不能以数字开头。

    sql 模糊查询

    ### SQL Server 中的模糊查询详解 #### 一、引言 在数据库操作中,精确查询是一种常见的需求场景,但有时我们需要进行更为灵活的查询——即模糊查询。这种查询方式允许我们在不完全确定数据具体内容的情况下,依然...

    Mysql| 使用通配符进行模糊查询详解(like,%,_)

    _下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符. like操作符: LIKE作用是指示mysql后面的搜索模式是利用通配符而不是直接相等匹配进行比较. 注意: 如果在使用like操作符时,后面的没有使用通用匹配...

    SQL SERVER 模糊查询的技巧

    本文将详细介绍SQL Server中的模糊查询技巧,包括基本的通配符使用方法以及如何进行更为复杂的模式匹配。 #### 一、基本通配符使用 ##### 1. `%` 通配符 `%` 通配符代表任意数量(包括零个)的字符。它可以放在...

    SQL server2005 中通配符

    在SQL Server 2005中,通配符是数据库查询中的强大工具,它们允许用户在搜索模式中使用特殊字符来匹配不完全已知的数据。通配符查询可以帮助你找到部分匹配、模糊匹配或者在不知道确切字符串时进行查找。下面我们将...

Global site tag (gtag.js) - Google Analytics