当前位置: 首页 > 编程日记 > 正文

TSQL语句中的Like用法

SQL Server:SQL Like 的特殊用法

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

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

以上转载自:http://www.sqlstudy.com/sql_article.php?id=2008061601

SQL 通配符

在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。

SQL 通配符必须与 LIKE 运算符一起使用。

在 SQL 中,可使用以下通配符:

通配符描述
%替代一个或多个字符
_仅替代一个字符
[charlist]字符列中的任何单一字符

[^charlist]

或者

[!charlist]

不在字符列中的任何单一字符

原始的表 (用在例子中的):

Persons 表:

IdLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon
2BushGeorgeFifth AvenueNew York
3CarterThomasChangan StreetBeijing

使用 % 通配符

例子 1

现在,我们希望从上面的 "Persons" 表中选取居住在以 "Ne" 开始的城市里的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons WHERE City LIKE 'Ne%'

结果集:

IdLastNameFirstNameAddressCity
2BushGeorgeFifth AvenueNew York

例子 2

接下来,我们希望从 "Persons" 表中选取居住在包含 "lond" 的城市里的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons WHERE City LIKE '%lond%'

结果集:

IdLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon

使用 _ 通配符

例子 1

现在,我们希望从上面的 "Persons" 表中选取名字的第一个字符之后是 "eorge" 的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons WHERE FirstName LIKE '_eorge'

结果集:

IdLastNameFirstNameAddressCity
2BushGeorgeFifth AvenueNew York

例子 2

接下来,我们希望从 "Persons" 表中选取的这条记录的姓氏以 "C" 开头,然后是一个任意字符,然后是 "r",然后是任意字符,然后是 "er":

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons WHERE LastName LIKE 'C_r_er'

结果集:

IdLastNameFirstNameAddressCity
3CarterThomasChangan StreetBeijing

使用 [charlist] 通配符

例子 1

现在,我们希望从上面的 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons WHERE City LIKE '[ALN]%'

结果集:

IdLastNameFirstNameAddressCity
1AdamsJohnOxford StreetLondon
2BushGeorgeFifth AvenueNew York

例子 2

现在,我们希望从上面的 "Persons" 表中选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons WHERE City LIKE '[!ALN]%'

结果集:

IdLastNameFirstNameAddressCity
3CarterThomasChangan StreetBeijing

以上转载自:http://www.w3school.com.cn/sql/sql_wildcards.asp

笔者代码:

实现需求:匹配并获取表格中第二列出现过某特殊字符的所有行。

代码:

create table #tbl(k int,v nvarchar(30))
insert into #tbl select 1,'1+中为1+2' union select 2,'1+中为+1' union select 3,'中为' union select 4,'中为+1'declare @x1 nvarchar(30)
set @x1 = '中为'declare @prefix nvarchar(20)
set @prefix = '[+!-*/()[!]<>,]'

select * from #tbl where (v like '%'+@prefix+@x1+@prefix+'%' escape '!') or (v like @x1+@prefix+'%' escape '!')or (v like '%'+@prefix+@x1 escape '!')or (v = @x1) drop table #tbl

执行结果为:

2 1+中为+1
3 中为
4 中为+1

技术有限,本例中的查询语句后面的where语句用了三个or,只为匹配开头和结尾的特殊字符,代码比较笨重,同时会增加系统的开销。如果更好的实现方法,望多多指教!

相关文章:

MySQL数据类型

--------MySQL常用数据类型概括&#xff1a; #1. 数字&#xff1a;整型&#xff1a;tinyint int bigint小数&#xff1a;float &#xff1a;在位数比较短的情况下不精准double &#xff1a;在位数比较长的情况下不精准decimal&#xff1a;&#xff08;如果用小数&#xff0c;…

L1-047 装睡 (结构体解决)

L1-047 装睡 (10 分) 你永远叫不醒一个装睡的人 —— 但是通过分析一个人的呼吸频率和脉搏&#xff0c;你可以发现谁在装睡&#xff01;医生告诉我们&#xff0c;正常人睡眠时的呼吸频率是每分钟15-20次&#xff0c;脉搏是每分钟50-70次。下面给定一系列人的呼吸频率与脉搏&am…

sum_series() 求一列数的指定个数的数和(5个数字的和)

1 #include <stdio.h>2 #include <stdarg.h>3 /*用sum_series() 求一列数的指定个数的数和(5个数字的和)*/4 double sum_series(int num, ...);5 6 int main()7 {8 double s;9 s sum_series(5, 0.5, 0.25, 0.125, 0.06254, 2.0); 10 printf("Sum…

oracle创建用户名授权,oracle创建用户及授权创建表

----Oracle 用户、对象权限、系统权限--建立表空间和用户的步骤&#xff1a;用户建立&#xff1a;create user 用户名 identified by "密码";授权&#xff1a;grant create session to 用户名;grant create table to 用户名;grant create tablespace to 用户名;gra…

过滤器、拦截器、aop的先后顺序和作用范围&拦截器preHandle(),postHandle(),afterComplation()方法执行顺序

在Spring框架中,过滤器(Filter)、拦截器(Interceptor)和面向切面编程(AOP)都是用于处理请求和处理流程的组件,但它们的作用范围和触发时机有所不同。下面我会解释这三者的先后顺序和作用范围。执行顺序:请注意,这个顺序可能因具体的配置和使用的技术而有所不同。在实际应用中,建议根据项目的具体需求来合理配置和使用这些组件。拦截器执行流程图:实现拦截器需要实现这个接口,这个 接口中有三个默认方法,这三个方法的执行顺序:我们实现接口然后重写这三个方法,就会在对应的时机被自动执行。这里就是调用处理

[IoC容器Unity]第四回:使用范例

1.引言  前面几个章节介绍了Unity的基本使用&#xff0c;主要分为程序和配置文件两种方法的使用&#xff0c;可以参考一下链接&#xff0c; [IoC容器Unity]第一回&#xff1a;Unity预览[IoC容器Unity]第二回&#xff1a;Lifetime Managers生命周期[IoC容器Unity]第三回&#x…

Zookeeper概要、协议、应用场景

Zoopkeeper提供了一套很好的分布式集群管理的机制,就是它这种基于层次型的目录树的数据结构并对树中的节点进行有效管理,从而可以设计出多种多样的分布式的数据管理模型,作为分布式系统的沟通调度桥梁。

L1-056 猜数字 (结构体解决)

L1-056 猜数字 (20 分) 一群人坐在一起&#xff0c;每人猜一个 100 以内的数&#xff0c;谁的数字最接近大家平均数的一半就赢。本题就要求你找出其中的赢家。 输入格式&#xff1a; 输入在第一行给出一个正整数N&#xff08;≤104&#xff09;。随后 N 行&#xff0c;每行给…

不同的source control下配置DiffMerge

TFS&#xff1a; 1. 打开Option -> Source Control -> Visual Studio TFS -> Configure User Tools; 2. 添加 .*, Compare, C:\Program Files (x86)\SourceGear\DiffMerge\DiffMerge.exe, /title1%6 /title2%7 %1 %2; 3. 添加 .*, Merge, C:\Program Files (x86)\Sour…

下载oracle修复补丁下载,Oracle数据库修复工具下载_FROMBYTE Reconstructor for Oracle官方版下载[修复软件]-下载之家...

FROMBYTE Reconstructor for Oracle(Oracle数据库修复工具)官方版是一款专为Oracle的数据库进行修复软件&#xff0c;可以通过Oracle数据库修复工具软件创建一个修复区域&#xff0c;随后对数据库所在的位置扫描&#xff0c;将扫描的结果显示在主区域&#xff0c;让您可以查看哪…

SEO查询指令,非常值得你收藏!

用好搜索引擎一些特殊指令&#xff0c;是干SEO这行的一个基本功。初步整理了10个功能&#xff0c;单独使用是最基本的能力&#xff0c;如果综合使用&#xff0c;你会发现搜索的奥妙无穷。 1. site:  某个特定网站收录情况  比如site:www.baidu.com 2. cache:  上一次搜索…

GITHup的使用

一个源码管理工具&#xff0c;由于不擅长敲GIt命令&#xff0c;还不太喜欢用英文版本的软件&#xff0c;所以想办法用中文版的图形工具步骤如下&#xff1a; 下载了GIT64位&#xff0c;安装&#xff0c;下载了TortoiseGit和TortoiseGit中文语言包&#xff0c;先后安装。然后设置…

debug:g2o cmake时报错“Qt5 not found. Install it and set Qt5_DIR accordingly

** debug&#xff1a;g2o cmake时报错“Qt5 not found. Install it and set Qt5_DIR accordingly” ** 完整报错&#xff1a; ubuntu:~/WorkSpace/g2o/build$ cmake …/ – Compiling on Unix – Found CHOLMOD and its dependencies – Compiling with OpenGL support – C…

oracle表中怎么去重复,Oracle里去掉表里组合字段重复的记录步骤是什么呢?

当设计表的时候没有建组合字段唯一约束&#xff0c;以后需要增加这一约束时&#xff0c;却发现表里已经有了很多重复记录了。请看看我用的去掉表里组合字段重复的记录方法&#xff1a;假设原始表名为source_table,字段名1为field_name1,字段名2为field_name2。(当然稍加修改也可…

Windows Server 2012

安装Windows Server 2012之后&#xff0c;为了使用的方便性、性能&#xff0c;作如下配置&#xff1a; 一、方便使用&#xff1a; 1、启动时不需要按CtrlAltDel&#xff1a; 控制面板|管理工具|本地安全设置&#xff0c;弹出本地安全设置窗口&#xff0c;然后选择“安全设置…

从网站上扒网页,保存为file文件格式

保存下来的页面总是有部分特效缺失&#xff0c;可是文件包里已经有好几个js文件了。  例如想保存易迅的搜索页面&#xff0c;条件筛选栏的按钮全部失效了&#xff0c;按钮-更多、多选等 都没有反应&#xff0c;搜索结果的鼠标悬浮显示完整信息也没有了。 在 Chrome 地址栏中键…

CSDN:新的开始

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

oracle直查和call哪个更快,让oracle跑的更快1读书笔记二

当前位置:我的异常网 数据库 <>读书笔记二<>读书笔记二www.myexceptions.net 网友分享于&#xff1a;2013-08-23 浏览&#xff1a;9次<>读书笔记21 绑定变量1)硬分析和软分析硬分析需要判断是否已经在共享池中&#xff0c;如果有的话&#xff0c;则直接拿…

WordPress 开启 Gzip 为网页加载提速减少响应时间

2019独角兽企业重金招聘Python工程师标准>>> 大家都晓得&#xff0c;开启Gzip能极大地压缩文本数据的体积。对于使用 WordPress 的博主来说&#xff0c;开启服务器的GZip压缩是一个为博客加速的好方法。GZip可对多种类型的文 件进行压缩&#xff0c;对于 CSS&#x…

20180829-Java多线程编程

Java 多线程编程 Java给多线程编程提供了内置的支持。一个多线程程序包含两个或多个能并发运行的部分。 程序的每一部分都称作一个线程&#xff0c;并且每个线程定义了一个独立的执行路径。 多线程是多任务的一种特别的形式。多线程比多任务需要更小的开销。 这里定义和线程相关…

b-blkid查看磁盘设备文件系统类型

blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备&#xff08;包括交换分区&#xff09;所使用的文件系统类型、LABEL、UUID等信息进行查询 改命令存在于util-linux-2.23.2-26.el7.x86_64软件包之中 常用命令展示 blkid查询所有设备的文件系统…

与后台交互方法一 ——Ajax

一、Ajax&#xff1a;为无刷新读取服务器端数据&#xff0c;常用在用户注册、在线聊天室等。 使用Ajax读取数据时有以下几点需要注意&#xff1a; 1.字符集编码前后台要一致&#xff0c;否则前台显示的数据为乱码。 2.使用随机数或时间清除缓存、阻止缓存&#xff0c;防止服务器…

php复选框关联数据库字段,通过php将复选框中的多个值插入数据库

|我想将此表单值插入到datanase中&#xff1a;Brand 1Brand 2Brand 3Brand 4Brand 5这些文本框是通过php从数据库中的表中获取的&#xff0c;并且可能是Variable我想以这种格式插入数据库如果检查品牌1&#xff0c;则$ brand \“ 1&#xff0c;\”;最后像这样&#xff1a;inse…

WPF中的容器控件——Grid

网格布局 123123123123123123123123123123123123123123123123123123123123123123123123123123112312312312312312312312312312312312312312312312312312312312312312 123123实际应用中应该少不了网格布局&#xff0c;grid布局的特点&#xff1a; 1.每个grid中可以放多个控件&am…

h-hdparm打开关闭磁盘cache

查看磁盘型号 hdparm -I /dev/sde 查看磁盘缓存情况 hdparm -W /dev/sdb 打开或者关闭磁盘cache hdparm -W 0 /dev/sdb关闭 hdparm -W 1 /dev/sdb打开

linux diff 补丁文件夹,LINUX下制作补丁文件 diff,patch

diff(differential)功能说明&#xff1a;比较文件的差异。语  法&#xff1a;diff [-abBcdefHilnNpPqrstTuvwy][-;][-C ;][-D ;][-I ;][-S ;][-W ;][-x ;][-X ;][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]补充说明&#xff1a;diff以逐行的…

连通性2 无向图的双连通 bcc

待续。。。转载于:https://www.cnblogs.com/assult/p/3312457.html

网络规划设计培训与方案集下载

http://down.51cto.com/data/96887为OSPF城域网部署专题http://down.51cto.com/data/565799华为、H3C、神码等的一些关于网络规划设计的PPT资料&#xff0c;有技术性的&#xff0c;有理论的&#xff0c;有技术理论的。http://down.51cto.com/data/96885策略路由与路由策略原理培…

C语言标准库之strcat函数

2018-10-20C库函数strcat()函数的功能是实现字符串的拼接。其函数原型如下所示char *strcat(char *dest, const char *src) 1、参数说明 dest&#xff1a;指向目标数组&#xff0c;该目标包含看一个C字符串&#xff0c;且足够容纳追加之后的字符串。 src: 指向要追加的字…

设计模式——单例模式(Singleton)

保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。——DP UML类图 模式说明 个人认为单例模式是所有设计模式中最为简单的一个模式&#xff0c;因为实现这个模式仅需一个类&#xff0c;而不像其他模式需要若干个类。这个模式中&#xff0c;需要注意的一点就是…