数据库:sqlserver 2005
对下表(table)进行模糊查询:
id
n
1 |
_string |
2 |
%string |
3 |
[_]string |
4 |
[%]string |
SQL:
select * from table where n like '/_%' escape '/' --返回第一行
select * from table where n like '/[%' escape '/' --返回第三和第四两行
select * from table where n like '/[/%' escape '/' --返回第三行
不难看出,escape指定的字符后面紧挨着的第一个字符被看作是普通字符而非通配符。
文档内容:
使用 ESCAPE 子句的模式匹配
可搜索包含一个或多个特殊通配符的字符串。例如,customers 数据库中的 discounts 表可能存储含百分号 (%)
的折扣值。若要搜索作为字符而不是通配符的百分号,必须提供 ESCAPE 关键字和转义符。例如,一个样本数据库包含名为 comment 的列,该列含文本
30%。若要搜索在 comment 列中的任何位置包含字符串 30% 的任何行,请指定 WHERE comment LIKE
'%30!%%' ESCAPE '!'
之类的 WHERE 子句。如果未指定 ESCAPE 和转义符,则数据库引擎将返回包含字符串 30
的所有行。
如果 LIKE 模式中的转义符后面没有字符,则该模式无效并且 LIKE 返回
FALSE。如果转义符后面的字符不是通配符,则将放弃转义符并将该转义符后面的字符作为该模式中的常规字符处理。这包括百分号 (%)、下划线 (_) 和左括号
([) 通配符(如果它们包含在双括号 ([ ]) 中)。另外,在双括号字符 ([]) 内,可以使用转义符并将插入符号 (^)、连字符 () 和右括号 (])
转义。
hibernate实现的方法:(很不想用的一种方法)
session.createCriteria(Table.class).add(Restrictions.sqlRestriction("{alias}.n like '"+queryString.replaceAll("_", "/_").replaceAll("%", "/%").replaceAll("\u005B", "/[")+"%' escape '/'")).list();
分享到:
相关推荐
在SQL Server环境中,有时我们需要处理含有特殊字符的字符串,这些字符串可能是通过JavaScript的`escape`函数编码过的。JavaScript的`escape`函数用于编码URL、非ASCII字符和其他特殊字符,以便在网络上传输。当我们...
Escape character is ]`只要按照下面的操作,即可以成功访问MS SQL Server。 在Linux平台下使用php访问Windows平台上的SQL Server数据库的步骤: 1. 安装FreeTDS和PHP软件包 2. 配置FreeTDS和PHP的环境变量 3. ...
在SQL Server数据库中遇到中文乱码问题,通常是由于安装时默认的排序规则不适用于中文环境导致的。默认情况下,SQL Server可能使用拉丁文排序规则,这在处理中文字符时会出现问题。解决这个问题需要理解SQL Server的...
在 SQL Server 中处理 JSON 数据变得日益重要,尤其是对于那些需要从非结构化数据源提取信息的应用程序。本文将深入探讨 SQL Server 如何解析 JSON 数据,并详细介绍一种自定义函数 `dbo.parseJSON` 的实现细节。 #...
在SQL Server中,`LIKE`语句是...总结来说,`LIKE`语句结合`ESCAPE`关键字的使用,使得在SQL Server中进行复杂且精确的模式匹配成为可能,特别是在处理包含特殊字符的数据时,这种方法能够显著提高查询的准确性和效率。
SQL Server 模糊查询语句 SQL Server 模糊查询语句是指使用 LIKE 关键字和通配符来搜索符合指定模式的字符串。下面是 SQL Server 模糊查询语句的详细说明: 1. LIKE 关键字:LIKE 关键字用于搜索符合指定模式的...
总的来说,`ESCAPE`关键字是SQL中处理通配符的重要工具,它可以帮助我们在需要时保持特殊字符的原样性,并在一定程度上提高安全性。理解并正确使用这一特性,对于编写高效、安全的SQL查询至关重要。
5. **转义字符**:如果你的模式中包含了SQL Server的通配符或特殊字符,你可以使用`ESCAPE`关键字指定一个转义字符,这样就可以在模式中使用这些特殊字符。例如,如果你的模式是`'%_abc%'`,而你希望匹配实际字符串...
SQL Server 2016之后的版本支持简单的正则表达式功能,例如通过字符串函数如STRING_SPLIT()和STRING_ESCAPE()等来处理简单的文本匹配和替换,但复杂或高级的正则表达式功能可能仍然需要用户自行实现。 需要强调的是...
在SQL Server 2005中,通配符是数据库查询中的强大工具,它们允许用户在搜索模式中使用特殊字符来匹配不完全已知的数据。通配符查询可以帮助你找到部分匹配、模糊匹配或者在不知道确切字符串时进行查找。下面我们将...
SQL手工注入是网络安全领域中的一个重要话题,主要涉及的是利用数据库查询语句的漏洞来非法获取或篡改数据库信息。在本完全篇中,我们将深入探讨SQL注入的基本原理、常见手法、防范措施以及如何进行安全编码。 一、...
在SQL Server中,模糊查询是用于查找不完全匹配特定模式的数据的关键技术。这种查询方法主要依赖于`LIKE`关键字,它可以用于搜索字符串、日期或时间值,这些值可以部分匹配或符合某种模式。以下是对`LIKE`关键字和...
3.6.2 sql server中数据库的创建 57 3.6.3 删除数据库 58 第4章 索引与视图的创建 61 4.1 索引的基础知识 61 4.1.1 索引的概念 61 4.1.2 索引的结构 61 4.2 索引的创建与销毁 63 4.2.1 基本创建语法 63 ...
在SQL Server中,通配符主要有四种: "_"、"%"、"[]"和"[^]",每种通配符都有其特定的使用场景和用法。 1. "_"通配符 "_"通配符用来匹配任意单个字符,该符号只能匹配一个字符。它可以放在查询条件的任意位置,且...
在模糊查询中,我们需要查询包含通配符%, _之类的字符,比如我需要查询表名包含user_的表,我们可以用下面两种方法。 SELECT * FROM sysobjects WHERE xtype = 'U' AND name LIKE '%user/_%' ESCAPE '/' ...
3. **数据库的原生防护机制**:虽然部分数据库如MySQL提供了如`mysql_real_escape_string()`等函数来转义特殊字符,防止SQL注入,但在实际应用中,若未正确使用这些功能,仍然存在被攻击的风险。 4. **盲注攻击**:...