SQL Server:SQL Like 通配符特殊用法:Escape

 


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

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 '\'

 

后记:用过正则表达式的朋友应该都知道,在正则表达式里可以用*表示匹配0次或是多次, [\u4e00-\u9fa5]这个可以匹配中文,但在这里我没有发现类似的功能,所以匹配一些复杂的语句就比较头疼。如我要匹配形如:印张数量*单价、200+印张数量*单价、印张数量,但不匹配形如:印张数量5*单价、印张数量6767、55印张数量uu的数据就很难实现了。

下面这个就是要匹配包括“纺梦”这两个字,但这两个字只能是与“+-*/”这四个字符相连或是单独存在。如果这里的“纺梦”是任意中文字符就没办法去处理了。

复制代码
create table #tbl(n int,v nvarchar(100))
insert into #tbl select 1,'1+纺梦1+2' union select 2,'1+纺梦+1' union select 3,'纺梦' union select 4,'纺梦+1'select * from #tbl 
where (v like '%[+\-*/]纺梦[+\-*/]%' ESCAPE '\')or (v like '纺梦[+\-*/]%' ESCAPE '\') or (v like '%[+\-*/]纺梦' ESCAPE '\')or (v = '纺梦')--select * from #tbl
drop table #tbl
复制代码

 

转载于:https://www.cnblogs.com/yangmingyu/p/6928209.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

案例篇-HBase RowKey 设计指南

1.为什么 Rowkey 这么重要 1.1 RowKey 到底是什么 我们常说看一张 HBase 表设计的好不好,就看它的 RowKey 设计的好不好。可见 RowKey 在 HBase 中的地位。那么 RowKey 到底是什么?RowKey 的特点 如下: 类似于 MySQL、Oracle 中的主键,用于标示唯一的行…

PCIe简介及引脚定义

随着现代处理器技术的发展,在互连领域中,使用高速差分总线替代并行总线是大势所趋。与单端并行信号相比,高速差分信号可以使用更高的时钟频率,从而使用更少的信号线,完成之前需要许多单端并行数据信号才能达到的总线带…

IDEA下搜狗输入法输入中文时卡着不动的参考解决方法

【问题描述】 在IntelliJ IDEA工具的java编辑窗口,给代码增加注释时发现,输入中文时,搜狗输入法界面不动,只显示第一个字母。如图: 我想输入“根据”两个字,但搜狗输入法界面一直卡着不刷新,导…

七 web爬虫讲解2—urllib库爬虫—状态吗—异常处理—浏览器伪装技术、设置用户代理...

如果爬虫没有异常处理,那么爬行中一旦出现错误,程序将崩溃停止工作,有异常处理即使出现错误也能继续执行下去 1.常见状态吗 301:重定向到新的URL,永久性302:重定向到临时URL,非永久性304&#x…

DVI和HDMI中的TMDS接口协议

TMDS(Transition Minimized Differential signal),即过渡调制差分信号,也被称为最小化传输差分信号,是指通过异或及异或非等逻辑算法将原始信号数据转换成10位,前8为数据由原始信号经运算后获得&#xff0c…

TMDS的信号通道

1 TMDS的信号通道: 1个HDMI包括3个TMDS数据通道和1个TMDS时钟通道。 . 每一个TMDS时钟周期内,TMDS数据通道上会发送一个10位的字符信息; . 每个TMDS时钟周期内,编码器将2位的控制数据、4位的报数据或者8位的视频数据采取不同 …

[luoguP2774] 方格取数问题(最大点权独立集)

传送门 引入两个概念: 最小点权覆盖集:满足每一条边的两个端点至少选一个的最小权点集。 最大点权独立集:满足每一条边的两个端点最多选一个的最大权点集。 现在对网格染色,使得相邻两点颜色不同,之后把两个颜色的点分…

光谱分布、光谱辐射通量密度与不同时间段分布光谱(图示)

1、光谱分布图 2 太阳辐射能量图 3、不同时间段的太阳分布光谱图 4、不同波长的光的能量分布主要区域 5、不同波段的使用场景

基于深度学习和传统算法的人体姿态估计,技术细节都讲清楚了

计算机视觉的一大研究热点是人体姿态估计,还有很多问题急需解决,比如遮挡,交互等等。在最近的CVPR2020里边也有很多这方面的工作。本文站长主要是想谈谈基于深度学习的实时多人姿态估计。 人体姿态估计要干嘛? 关于人类活动规律的…

杨浦区阜盛农民工子弟小学见闻

天气有些阴沉,起了个大早,一个小时奔波后来到了这里…… 大门口: 校领导: 有些破旧的校舍和阴沉的天空下祖国的希望: 同上,希望…… 期待的目光: 顽皮的笑脸,排着队也要调皮&#xf…

人体姿态估计算法之open pose

一,openpose是一种自底向上的算法: OpenPose人体姿态识别项目是美国卡耐基梅隆大学(CMU)基于卷积神经网络和监督学习并以Caffe为框架开发的开源库。可以实现人体动作、面部表情、手指运动等姿态估计。适用于单人和多人&am…

抢火车票这个事吧,其实我也能做!(python黑科技)

2019独角兽企业重金招聘Python工程师标准>>> 又是一年,马上就要回家过年了,还没有买到票的小伙伴们是否已经像热锅上的蚂蚁了无脑的开始找黄牛了? 俗话说的好,求人不如求自己,抢票这玩意,其实我觉得我也可…

用 Python+openpose 实现抖音尬舞机

游戏开始后,随着音乐会给出不同的动作提示,用户按照提示摆出正确动作即可得分。援引官方说法,“尬舞机”主要应用了今日头条 AI Lab 自主开发的“人体关键点检测技术”,依靠这项技术,抖音能够检测到图像中所包含人体的…

Create a Service Catalog Request via REST API

http://wiki.servicenow.com/index.php?titleUseful_Catalog_Scripts#Eureka http://wiki.servicenow.com/index.php?titleService_Catalog_Script_API#gsc.tab0 Service Catalog APIhttps://docs.servicenow.com/bundle/istanbul-servicenow-platform/page/integrate/inboun…

解密昇腾AI处理器--Ascend310简介

Ascend310 AI处理器规格 Ascend310 AI处理器逻辑架构 昇腾AI处理器本质上是一个片上系统(System on Chip,SoC),主要可以应用在和图像、视频、语音、文字处理相关的应用场景。其主要的架构组成部件包括特制的计算单元、大容量的存储…

银盒子扫码下单在线订单开启商品售卖时段使用说明

1,登陆管理员账号,子账号下,配置管理--店铺配置--扫码下单Tab页,是否开启商品售卖时段,选择“是” 2,在商家后台登陆相应的子账号,在店铺管理--商品售卖时段里配置售卖时间以及相应时段售卖的商…

为什么早上和傍晚的太阳总是红色,而中午的大阳却是黄白色?

由太阳光本质决定,但会受环境影响。在地球上和火星上看到的太阳光也是有区别的,和太气层物质及厚薄也有关系。太阳光是由赤橙黄绿青蓝紫七色光组成的复合光是白色光。 在日出和日落的时候,地平线上所透过的大气层厚度,一般要比白…

java7

第八章 数组 1.数组的声明定义 数据类型[]变量名 new 数据类型[长度]; 列:int[]ary new int[5]; 2.取值,赋值 取值:数据名[下标]; 列:int a ary[1]; 赋值:变量数据名[…

串口波形分析

UART口发出数据按字节发送,发送数据8bit,实际量出波形为10bit,软件底层驱动会自动加上起始位和停止位各1bit,起始位为0,停止位为1。下图为用串口工具发送的数据和用示波器所量波形。 发送数据:0x34 0x43 示…

SpringBoot之MongoTemplate的查询可以怎么耍

学习一个新的数据库,一般怎么下手呢?基本的CURD没跑了,当可以熟练的增、删、改、查一个数据库时,可以说对这个数据库算是入门了,如果需要更进一步的话,就需要了解下数据库的特性,比如索引、事物…