首页 > 数据库 >SQL转义字符和通配符

SQL转义字符和通配符

时间:2023-11-16 22:01:10浏览次数:37  
标签:like 通配符 escape ABCDE 转义字符 SQL where select

1.使用   ESCAPE   关键字,定义转义符。在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。例如,要搜索在任意位置包含字符串   5%   的字符串,请使用:    
  WHERE   ColumnA   LIKE   '%5/%%'   ESCAPE   '/'  
2.ESCAPE   'escape_character'    
  允许在字符串中搜索通配符而不是将其作为通配符使用。escape_character   是放在通配符前表示此特殊用途的字符。  
   
  SELECT   *  
  FROM   finances  
  WHERE   description   LIKE   'gs_'   ESCAPE   'S'  
  GO  
   
  意思就是:  
  比如,我们要搜索一个字符串     "g_"     ,如果直接     like     "g_",那么   "_"的作用就是通配符,而不是字符,结果,我们会查到比如     "ga","gb","gc",而不是我们需要的   "g_".  
  用     LIKE   'gs_'   ESCAPE   'S'     's'表示特殊用法标志  
3.create   table   a   (name   varchar(10))  
  go  
  insert   into   a   select   '11%22'  
  union   all   select   '11%33'  
  union   all   select   '12%33'  
  go  
  select   *   from   a     WHERE   name   LIKE   '%/%33'   ESCAPE   '/'   --指定用'/'符号来说明跟在其后面的通配符字符为普能字符。(第二个%是字符不是通配符来的)  
  go  
  drop   table   a
结果为:  
  name                
  ----------    
  11%33  
  12%33


 

%:匹配零个及多个任意字符; _:与任意单字符匹配; []:匹配一个范围; [^]:排除一个范围

Symbol

Meaning

like '5[%]'

5%

like '[_]n'

_n

like '[a-cdf]'

a, b, c, d, or f

like '[-acdf]'

-, a, c, d, or f

like '[[]'

[

like ']'

]

like 'abc[_]d%'

abc_d and abc_de

like 'abc[def]'

abcd, abce, and abcf

like '[^1-9]'

0

like '[^1-9b-z]'

0, a

对于字符串中出现的特殊字符:'%','[','[]', '_' 可以使用 '[]' 把它们包含起来, 这样在匹配模式(pattern)中,它们就被当作普通字符对待了。

1. 用 like '[[]' 匹配特殊字符 '['

select 1 where '[ABCDE' like '[[]%'

2. 用 like ']' 匹配特殊字符 ']'

select 1 where ']ABCDE' like ']%'

3. 用 like '[[]]' 匹配特殊字符 '[]'

select 1 where '[]ABCDE' like '[[]]%%'

4. 用 like '[_]' 匹配特殊字符 '_'

select 1 where '_ABCDE' like '[_]%'

5. 用 like '[%]' 匹配特殊字符 '%'

select 1 where 'ABC%DE' like 'ABC[%]DE'

对于其他的特殊字符:'^', '-', ']' 因为它们本身在包含在 '[]' 中使用,所以需要用另外的方式来转义,于是就引入了 like 中的 escape 子句,另外值得注意的是:escape 可以转义所有的特殊字符。

select 1 where '^ABCDE' like '!^ABCDE' escape '!' select 1 where '-ABCDE' like '!-ABCDE' escape '!' select 1 where ']ABCDE' like '!]ABCDE' escape '!'  select 1 where '%ABCDE' like '\%ABCDE' escape '\' select 1 where '%ABCDE' like '!%ABCDE' escape '!' select 1 where '%ABCDE' like '#%ABCDE' escape '#' select 1 where '%ABCDE' like '@%ABCDE' escape '@'  select 1 where '[ABCDE' like '![ABCDE' escape '!' select 1 where ']ABCDE' like '!]ABCDE' escape '!'

看出规律了吧,就是用 escape 后面紧跟着的字符来做转义字符。 escape 后面的字符相当于 C 语言字符串中的转义字符 '\'。

最后,看一个更加复杂的匹配

select 1 where '[^A-Z]ABCDE' like '\[\^A\-Z\]%' escape '\'

标签:like,通配符,escape,ABCDE,转义字符,SQL,where,select
From: https://blog.51cto.com/u_14682436/8433318

相关文章

  • [20231114]如何知道一条sql语句涉及到那些表.txt
    [20231114]如何知道一条sql语句涉及到那些表.txt--//别人问的问题,开始想看执行计划不就可以吗?当然一些计划可能仅仅涉及到索引。还有joinelimination可能仅仅看到1个表。--//对方的目的就是获取这条sql语句相关表,重新分析表看看。--//我想起查询表获得对应sql_id的脚本,脚本如下,参......
  • 非常经典的一道SQL报错注入题目[极客大挑战 2019]HardSQL 1(两种解法!)
    题目环境:<br/>没错,又是我,这群该死的黑客竟然如此厉害,所以我回去爆肝SQL注入,这次,再也没有人能拿到我的flag了做了好多这个作者出的题了,看来又要上强度了判断注入类型username:adminpassword:1这里把参数password作为注入点<br/>1'<br/>单引号的字符型注入万能密码注......
  • SQL(Structured Query Language)简介和常见 SQL 命令示例
    简介SQL(StructuredQueryLanguage)是一种用于访问和操作关系型数据库的标准语言。它是一个功能强大的语言,用于执行各种数据库操作,包括检索数据、插入新记录、更新记录、删除记录、创建数据库、创建新表、设置权限以及执行存储过程和视图等。以下是SQL的一些重要方面:SQL的目的......
  • SQL(Structured Query Language)简介和常见 SQL 命令示例
    简介SQL(StructuredQueryLanguage)是一种用于访问和操作关系型数据库的标准语言。它是一个功能强大的语言,用于执行各种数据库操作,包括检索数据、插入新记录、更新记录、删除记录、创建数据库、创建新表、设置权限以及执行存储过程和视图等。以下是SQL的一些重要方面:SQL的目......
  • C#使用SqlSugar操作MySQL数据库实现简单的增删改查
    ......
  • Windows server 2012/2016安装SQL Server 2005和SP4补丁
    sqlserver2005安装包sqlserver2005SP4补丁包(非常难找,留作备用)链接:https://pan.baidu.com/s/1j5OOX-iV8gLrmSNqNLE-kg提取码:jvtr复制这段内容后打开百度网盘手机App,操作更方便哦 背景:在windowsserver2012/2016x64安装sqlserver2005的时候会提示如下错误,无法启......
  • sql server 循环 有那几种 sql实现循环
    SQL循环语句  declare@iint set@i=1 while@i<30 begin insertintotest(userid)values(@i) set@i=@i+1 end1.2.3.4.5.6.7. --------------- while条件 begin 执行操作 set@i=@i+1 end WHILE 设置重复执行SQL语句或语句块的条件。只要指定的条件......
  • Ubuntu 22.04 LTS 安装最新稳定版本nginx、mysql5.7和php7.2
    Ubuntu22.04LTS安装最新稳定版本nginx、mysql5.7和php7.2全部apt-get安装,就是快,迅速。前提是需要在有网络环境的情况下哈!!操作系统版本:Ubuntu22.04LTS一、安装最新稳定版本的nginxapt-getupdate#查看默认安装的nginx版本(默认为1.18。有点老,我们安装最新稳定版本)apt......
  • Navicat设置MySQL某用户只可访问特定数据库或表
    概述项目中需要将数据库中某些表对其他系统开放,故需设置数据库的访问权限,使得某用户只能访问指定的表。MySQL提供了相关的SQL语句,但本次使用Navicat以可视化方式进行配置。方法1、新建用户2、设置权限(1)服务器权限全不勾选(2)权限权限用于设置该用户可操作哪些数据库或表,且可设置操作......
  • 源码安装MySQL
    本文使用的Linux发行版本为AnolisOS8.864位。最后更新时间2023年11月16日本文安装的MySQL版本为8.1.0,其他版本方法类似。准备工作更新系统。yum-yupdate安装依赖。yuminstall-ygccgcc-c++cmakecmake3ncursesncurses-develbisonopensslopenssl-develg......