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

SQL转义字符和通配符

时间:2023-10-05 15:31:49浏览次数:35  
标签: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/7714663

相关文章

  • MySQL 的 InnoDB 存储引擎简介
    MySQL是世界上最流行的开源关系型数据库管理系统之一,而其中的存储引擎则是其关键组成部分之一。InnoDB存储引擎在MySQL中扮演了重要角色,提供了许多高级功能和性能优化,适用于各种应用程序和工作负载。本文将深入介绍InnoDB存储引擎的各个方面,以帮助您更好地理解它的特性和优......
  • MySQL-8.0.18的搭建
    一、安装mysql-8.0.18(1)下载安装包#下载前先卸载mariadb的一些东西yumremove-ymariadb*#然后下载安装包mkdir/usr/local/soft&&cd/usr/local/softwget-chttps://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz(2)......
  • MySql的安装配置
    首先简单概述分为几个步骤:一、下载Mysql二、安装Mysql三、验证Mysql安装是否成功四、 配置环境变量五、验证配置环境变量是否成功一、下载Mysql要在Windows或Mac上安装MySQL,首先从MySQL官方网站下载最新的MySQLCommunityServer版本:官网:https://www.mysql.com/1.首......
  • MySQL详细解析之Clone插件
    文档课题:MySQL详细解析之Clone插件.系统:rhel7.3数据库:MySQL8.0.271、理论知识从MySQL8.0.17开始引入Clone插件,克隆插件允许从本地或远程MySQLServer克隆数据.克隆的数据存储在InnoDB中的schema(database)、table(表)、tablespaces(表空间)和datadictionarymetadata(数据字典元数......
  • MySQL思维导图:MySQL的架构介绍
    MySQL的架构介绍(思维导图形式)MySQL简介概述MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。高级MySQLMySQL内核sql优化攻城狮MySQL服务器的优化各种参数常量设定查询语句优化主......
  • Mysql
    目录命令行DQL执行顺序函数字符串函数数值函数日期函数流程函数命令行selectdatabase();--查看当前的使用的数据库usestudent;--选择一个数据库showtables;--查询当前数据库有哪些表mysql>desc`order`;--查看表结构+--------------+--------------+------+......
  • MySQL数据库多表关联查询
    本文列举数据库的多表关联查询及实际使用,以员工表和部门表作为举例:部门表:dept点击查看创建部门表sqlcreate table `dept`  (  `deptno` int(2) not null,  `dname` varchar(14),  `loc` varchar(13),  primary key (`deptno`));员工表:emp点击查看创建......
  • 打开SQL Server配置管理器
    进入C盘的System32 搜索SQL就可以了(其实最开始是打算这样查SQLServer2022对应的配置管理器的版本的,阴差阳错发现了本体 或者直接win+r,输入SQLServerManger16.msc(不过我没成功过……) 参考——https://blog.csdn.net/YINZHE__/article/details/120575321 ......
  • 查看SQL Server数据库版本
    在SSMS里新建查询输入以下语句print'服务器名称:'+@@SERVERNAMEprint'SQLServer的版本'+@@VERSIONselect@@SERVERNAMEas'服务器名称'select@@VERSIONas'SQLServer的版本'执行可得或者在ssms上点击帮助——》关于即可得 ......
  • MySQL学习(3)B+树索引是如何快速查询的
    前言我们已经知道在磁盘中,有很多索引页,这些页并非在物理结构上相连接,而是通过双向链表关联。如果要查找一条数据,需要通过页目录中的槽,通过二分法定位到分组再进行遍历查找。比如下面这样:SELECT[查询列表]FROM表名WHERE条件; 假设表中只有一个页,在查找记录时,可以根据搜......