`
ninnd
  • 浏览: 21360 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

sqlserver中的escape

    博客分类:
  • sql
阅读更多

数据库: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();
 

 

分享到:
评论

相关推荐

    sqlserver sql 实现 escape 解码

    用sql实现js的unescape,方便做套打报表的朋友,自己刚写的,有问题请联系:94741441

    sql server数据库模糊查询语句

    部分内容“sql server数据库模糊查询语句, ...[ ] 通配符的示例。...使用 ESCAPE 关键字定义转义符 ”

    SQL中使用ESCAPE定义转义符详解

    使用ESCAPE定义转义符  在使用LIKE关键字进行模糊查询时,“%”、“_”和“[]...使用ESCAPE关键字定义了转义字符“M”,告诉DBMS将搜索字符串“%M%”中的第二个百分符(%)作为实际值,而不是通配符。当然,第一个百

    精通SQL--结构化查询语言详解

    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 结构化查询语言详解

    19.4 SQL Server中嵌入式SQL的编译运行 19.4.1 嵌入式SQL代码  19.4.2 预编译文件  19.4.3 设置Visual C++ 6.0连接  19.4.4 编译运行程序  19.5 Oracle中嵌入式SQL的编译运行  19.5.1 嵌入式SQL代码 ...

    SQL SERVER的模糊查询LIKE

     在模糊查询中,我们需要查询包含通配符%, _之类的字符,比如我需要查询表名包含user_的表,我们可以用下面两种方法。  SELECT * FROM sysobjects WHERE xtype = 'U' AND name LIKE '%user/_%' ESCAPE '/'  ...

    SQL Server——从入门到放弃(3)–SELECT(单表查询)

    字符匹配:[NOT] LIKE ‘’ [ESCAPE ‘’] 可以是一个完整的字符串,也可以含有通配符%和_ 【例3.29】查询学号为201215121的学生的详细情况 当匹配串为固定字符串时,以下两种方式等价: Select * from Student ...

    SQLPrompt_7.4.0.471

    Support for SQL Server Management Studio 17 Formatting improvements: Improvements to nested parentheses Case statements with comments now align correctly Now adds a space before aliases following ...

    SQLPrompt_7.4.1.603

    Support for SQL Server Management Studio 17 Formatting improvements: Improvements to begin/end formatting Improvements to nested parentheses Case statements with comments now align correctly Now adds...

    C#开发经验技巧宝典

    0956 C#中附加单文件SQL Server数据库 559 0957 备份SQL Server数据库 559 0958 还原SQL Server数据库 560 0959 开启SQL Server数据库服务 561 0960 断开SQL Server数据库服务 562 0961 如何判断SQL ...

    SQL21日自学通

    SQL 在编程中的应用 27 第二天查询— — SELECT 语句的使用 30 目标 30 背景 30 一般的语法规则 30 你的第一个查询 33 总结 37 问与答 38 校练场 38 练习 39 第三天表达式条件语句与运算 40 第四天函数对数据的...

    SQL练习3-SELECT

    [NOT] LIKE ‘’ [ESCAPE’’] 含义是找到指定的属性列值与相匹配的元组,可以是一个完整的字符串,也可以含有通配符%和_。 %:表示为代表容易长度(长度可以为0)的字符串,例如a%b表示以a开头,以b结尾的任意长度...

    WebCruiser - Web Vulnerability Scanner(Web漏洞扫描器)

    * SQL Server明文/字段回显/盲注; * MySQL字段回显/盲注; * Oracle字段回显/盲注; * DB2字段回显/盲注; * Access字段回显/盲注; * 管理入口查找; * GET/Post/Cookie 注入; * 搜索型注入延时; * 自动...

    Dimeric.Virtual.Database.

    For example, the macro for the database‘s current date and time would be CURRENT for the Informix dialect and getdate() for the SQL Server dialect. In VDB you would use the [now()] function. If you ...

    C#编程经验技巧宝典

    73 <br>0106 如何获得一个字符串中数字的长度 74 <br>0107 如何获得字符串中数字或字母的长度 74 <br>0108 如何获得字符串中某个数字的位置 75 <br>0109 获得字符串中汉字的个数 76 <br>0110...

    unidac 7.4.11 pro for RAD Studio 10.3

    SQLServer data provider QuoteNames option in TUniLoader to escape field names is added Bug with mapping a TEXT field to ftWideMemo in Delphi is fixed Bug with SQL statements containing a CONTAINS ...

    Devart UniDAC 7.4.11 Professional for RAD Studio 10.3 Rio

    SQLServer data provider QuoteNames option in TUniLoader to escape field names is added Bug with mapping a TEXT field to ftWideMemo in Delphi is fixed Bug with SQL statements containing a CONTAINS ...

    UnidacPro8.0.1Rio.rar

    v8.0.1 RAD Studio 10.3 Rio is supported Support of UPPER and LOWER ...SQLServer data provider QuoteNames option in TUniLoader to escape field names is added Bug with mapping a TEXT field to ftWideMemo ...

    UnidacProv8.0.1Tokyo.rar

    v8.0.1 RAD Studio 10.2 Tokyo is supported Support of UPPER and LOWER ...SQLServer data provider QuoteNames option in TUniLoader to escape field names is added Bug with mapping a TEXT field to ftWideMemo ...

    21天学习SQL V1.0

    21天学习SQL V1.0.pdf 66 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 2 日期/时间函数.........................................................................................................

Global site tag (gtag.js) - Google Analytics