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

SQL转义字符和通配符

时间:2023-09-22 11:00:57浏览次数:33  
标签: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/7562820

相关文章

  • mysql 5.7在线开启/关闭GTID【转】
    一、在线开启gtid步骤步骤1到步骤5在每个mysql节点都执行,不可以单独某个库独立做完所有步骤再去操作其他节点;尤其注意不能先将主库打开gtid,从库任何参数不设置,这样将导致同步中断。1、检查数据库中是否有不支持gtid的操作设置ENFORCE_GTID_CONSISTENCY=WARN,运行一段时间,最好包......
  • MySQL备份与恢复
    数据库备份的分类数据备份的重要性备份的主要目的是灾难恢复在生产环境中,数据的安全性至关重要任何数据的丢失都可能产生严重的后果任何数据丢失的原因程序错误人为操作错误运算错误磁盘故障灾难(如火宅、地震)个盗窃从物理与逻辑的角度,备份可分为物理备份:对......
  • MySQL数据库管理
    目录数据库的基本概念数据库的发展主流的数据库介绍MySQL安装方法操作MySQL查看数据库结构SQL语句创建及删除数据库和表修改表名和表结构数据表高级操作数据库用户管理数据库用户授权数据库的基本概念数据描述事物的符号记录包括数字,文字、图形、图像、声音、档案记录等以......
  • 操作mysql
    importpymysqlimportpandasaspdconnection=pymysql.connect( host='127.0.0.1', #服务器ip地址 port=3306, #mysql默认端口号 user="root", #用户名 password="123456", #密码 charset="utf8",#字符集 db="new_dev......
  • Mysql忘记密码后如何重置密码
    长时间不使用本机的Mysql后把密码忘记了咋整?直接上干货:第一步(Mysql部署的位置,若自己能找到就忽略这一步):任务管理器中也可以找到第二步:修改配置文件在my.ini末尾加上 skip-grant-tables=1(这一句是为了忽略数据库密码)第三步:重启数据库服务并重置数据库密码(先用管理员模式......
  • postgresql主从复制状态检查
    确定主从库方法一ps-ef|grep"wal"|grep-v"grep如果输出walsender…streaming进程说明当前数据库为主库如果输出walreceiverstreaing进程说明当前数据库为备用库方法二select*frompg_stat_replication;在主库上查询pg_stat_replication视图,如果返回记录说明是主库,备库上......
  • MySQL主从原理及常见架构介绍
    主从概述MySQL主从复制也可以称为MySQL主从同步,它是构建数据库高可用集群架构的基础。它通过将一台主机的数据复制到其他一台或者多台主机上,并重新应用日志(relaylog)中的SQL语句来实现复制功能。MySQL支持单向、双向、链式级联、异步复制,5.5版本之后加入的半同步复制,5.6版本之后......
  • 关于mysql安装过程中的密码设置问题
    在使用setpassword=password("0000000000");更改密码时出现的ERROR1064(42000):YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'password("0000000000")......
  • WPF异步命令以及SqlSugar异步增删改查
    1、异步///<summary>///查询全部///</summary>///<returns></returns>publicasyncTask<List<IgniteTubeInfo>>QueryListAsync(){returnawaitdb.Queryable<IgniteTubeInfo>().ToListAsync();}///<summa......
  • MySQL锁知识点扫盲大全
     1.为什么需要加锁 在日常生活中,如果你心情不好想静静,不想被比别人打扰,你就可以把自己关进房间里,并且反锁。这就是生活中的加锁。 同理,对于MySQL数据库来说的话,一般的对象都是一个事务一个事务来说的。所以,如果一个事务内,一个SQL正在更新......