热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mssqllike查询字符

mssqllike查询字符语法match_expression[NOT]LIKEpattern[ESCAPEescape_character]参数match_expression任何字符串数据类型的有效SQLServer表达式。patternmatch_expression中的搜索模式,可以包含下列有效SQLServer通配符
mssql like 查询字符


语法
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]

参数
match_expression

任何字符串数据类型的有效 SQL Server 表达式。

pattern

match_expression 中的搜索模式,可以包含下列有效 SQL Server 通配符。

通配符 描述 示例
% 包含零个或更多字符的任意字符串。 WHERE title LIKE '%computer%' 将查找处于

书名任意位置的包含单词 computer 的所有书名。
_(下划线) 任何单个字符。 WHERE au_fname LIKE '_ean' 将查找以 ean 结尾的所

有 4 个字母的名字(Dean、Sean 等)。
[ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符。 WHERE au_lname

LIKE '[C-P]arsen' 将查找以arsen 结尾且以介于 C 与 P 之间的任何单个字符开始的

作者姓氏,例如,Carsen、Larsen、Karsen 等。
[^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符。 WHERE au_lname

LIKE 'de[^l]%' 将查找以 de 开始且其后的字母不为 l 的所有作者的姓氏。


escape_character

字符串数据类型分类中的所有数据类型的任何有效 SQL Server 表达式。

escape_character 没有默认值,且必须仅包含一个字符。

结果类型
Boolean

结果值
如果 match_expression 匹配指定模式,LIKE 将返回 TRUE。

注释
当使用 LIKE 进行字符串比较时,模式字符串中的所有字符都有意义,包括起始或尾随

空格。如果查询中的比较要返回包含"abc "(abc 后有一个空格)的所有行,则将不会

返回包含"abc"(abc 后没有空格)的列所在行。但是可以忽略模式所要匹配的表达式

中的尾随空格。如果查询中的比较要返回包含"abc"(abc 后没有空格)的所有行,则

将返回以"abc"开始且具有零个或多个尾随空格的所有行。

由于数据存储方式的原因,使用包含 char 和 varchar 数据模式的字符串比较可能无

法通过 LIKE 比较。了解每种数据类型的存储方式以及导致 LIKE 比较失败的原因十分

重要。下面的示例将局部 char 变量传递给存储过程,然后使用模式匹配查找某个作者

的所有著作。在此过程中,作者的姓将作为变量传递。

CREATE PROCEDURE find_books @AU_LNAME char(20)ASSELECT @AU_LNAME = RTRIM

(@AU_LNAME) + '%'SELECT t.title_id, t.title FROM authors a, titleauthor ta,

titles tWHERE a.au_id = ta.au_id AND ta.title_id = t.title_id AND

a.au_lname LIKE @AU_LNAME当名字中包含的字符数小于 20 时,char 变量

(@AU_LNAME) 将包含尾随空格,这导致 find_books 过程中没有行返回。由于

au_lname 列为 varchar 类型,所以没有尾随空格。因为尾随空格是有意义的,所以此

过程失败。

但下面的示例是成功的,因为尾随空格没有被添加到 varchar 变量中:

USE pubsGOCREATE PROCEDURE find_books2 @au_lname varchar(20)ASSELECT

t.title_id, t.title FROM authors a, titleauthor ta, titles tWHERE a.au_id =

ta.au_id AND ta.title_id = t.title_id AND a.au_lname LIKE @au_lname +

'%'EXEC find_books2 'ring'下面是结果集:

title_id title

-------- -----------------------------------------------------

----------MC3021 The Gourmet Microwave

PS2091 Is Anger the Enemy

PS2091 Is Anger the Enemy

PS2106 Life Without Fear

(4 row(s)

affected)使用 LIKE 的模式匹配
当搜索 datetime 值时,推荐使用 LIKE,因为 datetime 项可能包含各种日期部分。

例如,如果将值 19981231 9:20 插入到名为 arrival_time 的列中,则子句 WHERE

arrival_time = 9:20 将无法找到 9:20 字符串的精确匹配,因为 SQL Server 将其转

换为 1900 年 1 月 1 日上午 9:20。然而,子句 WHERE arrival_time LIKE '%9:20%'

将找到匹配。

LIKE 支持 ASCII 模式匹配和 Unicode 模式匹配。当所有参数,包括

match_expression、pattern 和 escape_character(如果有)都是 ASCII 字符数据类

型时,将执行 ASCII 模式匹配。如果其中任何参数属于 Unicode 数据类型,则所有参

数将被转换为 Unicode 并执行 Unicode 模式匹配。当对 Unicode 数据(nchar 或

nvarchar 数据类型)使用 LIKE 时,尾随空格是有意义的。但是对于非 Unicode 数据

,尾随空格没有意义。Unicode LIKE 与 SQL-92 标准兼容。ASCII LIKE 与 SQL

Server 的早期版本兼容。

下面的一系列示例显示 ASCII LIKE 模式匹配与 Unicode LIKE 模式匹配所返回的行之

间的差异:

-- ASCII pattern matching with char columnCREATE TABLE t (col1 char(30))

INSERT INTO t VALUES ('Robert King')SELECT * FROM t WHERE col1 LIKE '% King'

-- returns 1 row-- Unicode pattern matching with nchar columnCREATE TABLE

t (col1 nchar(30))INSERT INTO t VALUES ('Robert King')SELECT * FROM t WHERE

col1 LIKE '% King' -- no rows returned-- Unicode pattern matching with

nchar column and RTRIMCREATE TABLE t (col1 nchar (30))INSERT INTO t VALUES

('Robert King')SELECT * FROM t WHERE RTRIM(col1) LIKE '% King' -- returns

1 row说明 如果使用 LIKE 进行字符串比较,模式字符串中的所有字符都有意义,包

括起始空格或尾随空格。

使用 % 通配符
如果指定 LIKE '5%',SQL Server 将搜索后面带有零个或多个任意字符的数字 5。

例如,此查询将显示中所有的系统表,因为它们都以字母 sys 开始:

SELECT TABLE_NAMEFROM INFORMATION_SCHEMA.TABLESWHERE TABLE_NAME LIKE 'sys%'

说明 请注意:系统表可以随版本不同而更改。推荐使用信息架构视图或适用的存储

过程处理 SQL Server 系统表。

若要查阅非系统表的所有对象,请使用 NOT LIKE 'sys%'。如果共有 32 个对象且

LIKE 找到 13 个与模式匹配的名称,则 NOT LIKE 将找到 19 个与 LIKE 模式不匹配

的对象。

使用 LIKE '[^s][^y][^s]%' 模式不一定每次找到的名称都相同。可能仅得到 14 个名

称(而不是 19 个),除了系统表名称外,所有以 s 开始或第二个字母为 y 或第三个

字母为 s 的名称也都将从结果中消除。这是因为用反向通配符匹配字符串是分步骤进

行计算的,一次一个通配符。如果在计算过程中任一环节匹配失败,那么就会将其消除

将通配符作为文字使用
可以将通配符模式匹配字符串用作文字字符串,方法是将通配符放在括号中。下表显示

了使用 LIKE 关键字和 [ ] 通配符的示例。

符号 含义
LIKE '5[%]' 5%
LIKE '[_]n' _n
LIKE '[a-cdf]' a、b、c、d 或 f
LIKE '[-acdf]' -、a、c、d 或 f
LIKE '[ [ ]' [
LIKE ']' ]
LIKE 'abc[_]d%' abc_d 和 abc_de
LIKE 'abc[def]' abcd、abce 和 abcf


使用 ESCAPE 子句的模式匹配
可搜索包含一个或多个特殊通配符的字符串。例如,customers 数据库中的 discounts

表可能存储含百分号 (%) 的折扣值。若要搜索作为字符而不是通配符的百分号,必须

提供 ESCAPE 关键字和转义符。例如,一个样本数据库包含名为 comment 的列,该列

含文本 30%。若要搜索在 comment 列中的任何位置包含字符串 30% 的任何行,请指定

由 WHERE comment LIKE '%30!%%' ESCAPE '!' 组成的 WHERE 子句。如果不指定

ESCAPE 和转义符,SQL Server 将返回所有含字符串 30 的行。

下例说明如何在 pubs 数据库 titles 表的 notes 列中搜索字符串"50% off when 100

or more copies are purchased":

USE pubsGOSELECT notesFROM titlesWHERE notes LIKE '50%% off when 100 or more

copies are purchased' ESCAPE '%'GO示例
A. 使用带 % 通配符的 LIKE
下例查找 authors 表中所有区号为 415 的电话号码。

USE pubsGOSELECT phoneFROM authorsWHERE phone LIKE '415%'ORDER by au_lnameGO

下面是结果集:

phone ------------ 415 658-9932 415 548-7723 415 836-7128 415 986-

7020 415 836-7128 415 534-9219 415 585-4620 415 354-7128 415 834-2919 415

843-2991 415 935-4228 (11 row(s) affected)B. 使用带 % 通配符的 NOT LIKE
下例查找 authors 表中所有区号不是 415 的电话号码。

USE pubsGOSELECT phoneFROM authorsWHERE phone NOT LIKE '415%'ORDER BY

au_lnameGO下面是结果集:

phone ------------ 503 745-6402 219 547-9982 615 996-8275 615 297-

2723 707 938-6445 707 448-4982 408 286-2428 301 946-8853 801 826-0752 801

826-0752 913 843-0462 408 496-7223 (12 row(s) affected)C. 使用 ESCAPE 子句
下例使用 ESCAPE 子句和转义符查找 mytbl2 表的 c1 列中的精确字符串 10-15%。

USE pubsGOIF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_NAME = 'mytbl2') DROP TABLE mytbl2GOUSE pubsGOCREATE TABLE

mytbl2( c1 sysname)GOINSERT mytbl2 VALUES ('Discount is 10-15% off')INSERT

mytbl2 VALUES ('Discount is .10-.15 off')GOSELECT c1 FROM mytbl2WHERE c1

LIKE '%10-15!% off%' ESCAPE '!'GOD. 使用 [ ] 通配符
下例查找名字为 Cheryl 或 Sheryl 的作者。

USE pubsGOSELECT au_lname, au_fname, phoneFROM authorsWHERE au_fname LIKE

'[CS]heryl'ORDER BY au_lname ASC, au_fname ASCGO下例查找姓为 Carson、Carsen

、Karson 或 Karsen 的作者所在的行。

USE pubsGOSELECT au_lname, au_fname, phoneFROM authorsWHERE au_lname LIKE

'[CK]ars[eo]n'ORDER BY au_lname ASC, au_fname ASCGO请参见
表达式

函数

SELECT

WHERE

下面看个高级搜索

基本条件查询

比较运算符:>,>=,<,<=,=,!=

between a and b,in(a,b,c),not exists,is null,like ‘%_’,or,and, any,all等

把某一字段中内容在特定范围内的记录查询出来

SELECT StudentID, Score FROM SCore WHERE Score BETWEEN 60 AND 80

把某一字段中内容与所列出的查询内容列表匹配的记录查询出来

SELECT SName AS 学员姓名,SAddress As 地址 FROM Students WHERE SAddress IN ('

北京','广州','上海')

推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了brain的意思、读音、翻译、用法、发音、词组、同反义词等内容,以及脑新东方在线英语词典的相关信息。还包括了brain的词汇搭配、形容词和名词的用法,以及与brain相关的短语和词组。此外,还介绍了与brain相关的医学术语和智囊团等相关内容。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Echarts图表重复加载、axis重复多次请求问题解决记录
    文章目录1.需求描述2.问题描述正常状态:问题状态:3.解决方法1.需求描述使用Echats实现了一个中国地图:通过选择查询周期&#x ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • Python字典推导式及循环列表生成字典方法
    本文介绍了Python中使用字典推导式和循环列表生成字典的方法,包括通过循环列表生成相应的字典,并给出了执行结果。详细讲解了代码实现过程。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • “你永远都不知道明天和‘公司的意外’哪个先来。”疫情期间,这是我们最战战兢兢的心情。但是显然,有些人体会不了。这份行业数据,让笔者“柠檬” ... [详细]
author-avatar
范大少微博劳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有