SQL like

确定给定的字符串是否与指定的模式匹配。模式可以包含常规字符和通配符字符。

模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。然而,可使用字符串的任意片段匹配通配符。

与使用 = 和 != 字符串比较运算符相比,使用通配符可使 LIKE 运算符更加灵活。

如果任何参数都不属于字符串数据类型,Microsoft® SQL Server™ 会将其转换成字符串数据类型(如果可能)。
语法
match_expression_r [ NOT ] LIKE pattern [ ESCAPE escape_character ]
参数
match_expression_r
任何字符串数据类型的有效 SQL Server 表达式。
pattern
match_expression_r 中的搜索模式,可以包含下列有效 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_r 匹配指定模式,LIKE 将返回 TRUE。
注释
当使用 LIKE 进行字符串比较时,模式字符串中的所有字符都有意义,包括起始或尾随空格。如果查询中的比较要返回

包含"abc "(abc 后有一个空格)的所有行,则将不会返回包含"abc"(abc 后没有空格)的列所在行。

但是可以忽略模式所要匹配的表达式中的尾随空格。如果查询中的比较要返回包含"abc"(abc 后没有空格)的所有行,

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

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

了解每种数据类型的存储方式以及导致 LIKE 比较失败的原因十分重要。下面的示例将局部 char 变量传递给存储过程,

然后使用模式匹配查找某个作者的所有著作。在此过程中,作者的姓将作为变量传递。

当名字中包含的字符数小于 20 时,char 变量 (@AU_LNAME) 将包含尾随空格,这导致 find_books 过程中没有行返回。

由于 au_lname 列为 varchar 类型,所以没有尾随空格。因为尾随空格是有意义的,所以此过程失败。

使用 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_r、pattern 和
escape_character(如果有)都是 ASCII 字符数据类型时,将执行 ASCII 模式匹配。如果其中任何参数属于 Unicode 数据类型,

则所有参数将被转换为 Unicode 并执行 Unicode 模式匹配。当对 Unicode 数据(nchar 或 nvarchar 数据类型)使用 LIKE 时,

尾随空格是有意义的。但是对于非 Unicode 数据,尾随空格没有意义。Unicode LIKE 与 SQL-92 标准兼容。

ASCII LIKE 与 SQL Server 的早期版本兼容。

使用 % 通配符
如果指定 LIKE '5%',SQL Server 将搜索后面带有零个或多个任意字符的数字 5。
例如,此查询将显示数据库中所有的系统表,因为它们都以字母 sys 开始:
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE 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 的名称也都将从结果中消除。

这是因为用反向通配符匹配字符串是分步骤进行计算的,一次一个通配符。

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

转载于:https://www.cnblogs.com/xtwkh1973/p/10990568.html

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

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

相关文章

计划备份mysql数据库

1:mysql是我们使用最多的数据库,如果在日常中正确的对mysql数据进行备份,下面我们就来做这事,通过脚本来实现##########################################################################################################################…

leetcode1333. 餐厅过滤器

给你一个餐馆信息数组 restaurants,其中 restaurants[i] [idi, ratingi, veganFriendlyi, pricei, distancei]。你必须使用以下三个过滤器来过滤这些餐馆信息。 其中素食者友好过滤器 veganFriendly 的值可以为 true 或者 false,如果为 true 就意味着你…

3.27下午

转载于:https://www.cnblogs.com/bgd140201228/p/6628194.html

2019春季学期进度报告(十四)

课上花费时间:5h 课下花费时间:6h 学会的新内容:阿里云服务器的购买,websockt入门。 代码量:200h 转载于:https://www.cnblogs.com/Aduorisk/p/11056750.html

rxjs 怎么使用_使用RxJS Observables进行SUPER SAIYAN

rxjs 怎么使用I loved DragonBall Z as a kid, and still love it as an adult. 我从小就爱DragonBall Z,但从小到大仍然喜欢它。 Among the ludicrous number of transformations, the original Super Saiyan remains my favorite. 在可笑的转换数量中&#xff0c…

java编程石头剪刀布_java 开发的石头,剪刀,布的游戏 demo

[java]代码库/** 创建一个类Game,石头,剪刀,布的游戏。*/public class Game {/*** param args*/String[] s {"石头","剪刀","布"};//获取电脑出拳String getComputer(int i){String computerGuess s[i];retur…

JList的基本操作

1.初始化并添加元素 DefaultListModel leftListModelnew DefaultListModel(); String[] items Model.getPairs(); for (int i0; i<items.length; i) { leftListModel.add(i, items[i]); } JList leftLstnew JList(leftListModel); 2.删除所有元素 leftListModel.remove…

请求WebApi的几种方式

请求WebApi的几种方式目前所了解的请求WebAPI的方式有通过后台访问api 和通过js 直接访问api接口 首先介绍下通过后台访问api的方法&#xff0c;可以使用HttpClient的方式也可以使用WebRequest的方式 1、HttpClient的方式 &#xff08;1&#xff09;Get请求 string url "…

Django第三篇

前端反向解析 应用场景&#xff1a;通过访问a路由&#xff0c;到达a的对应视图函数&#xff0c;函数到达对应的前端a标签 a标签的路径是b路由&#xff0c;如果我们在后端改变b路由的路径&#xff0c;那么a标签便无法访问 到b路由&#xff0c;只能手动在前端改变a标签的路径&…

leetcode792. 匹配子序列的单词数

给定字符串 S 和单词字典 words, 求 words[i] 中是 S 的子序列的单词个数。 示例: 输入: S “abcde” words [“a”, “bb”, “acd”, “ace”] 输出: 3 解释: 有三个是 S 的子序列的单词: “a”, “acd”, “ace”。 class Solution {public int numMatchingSubseq(Strin…

react context_使用React Context API-入门

react contextLets use the React Context API to change theme in an app!让我们使用React Context API更改应用程序中的主题&#xff01; 但是首先&#xff0c;一些背景 &#xff01; &#xff1f; (But first, some context! ?) Ok terrible puns aside lets have a look …

redis本地及远程登录

redis默认只能localhost登录&#xff0c;所以需要开启远程登录。解决方法如下&#xff1a;一、在redis的配置文件redis.conf中&#xff0c;找到bind 127.0.0.11、去掉 #bind 127.0.0.1前面的#号注释&#xff0c;将bind 127.0.0.1 改成了bind 0.0.0.0&#xff08;这样不限制连接…

java初始化变量n_java中预构造函数初始化变量的属性

在Java中,可以在调用构造函数之前初始化编程变量.public class StockGraph extends JPanel {public boolean runUpdates true;double TickMarks 18;double MiddleTick TickMarks / 2;double PriceInterval 5;double StockMaximum;double StockMinimum;Random testStockValu…

烦了

桃花飞绿水 一庭芳草围新绿 有情芍药含春泪 野竹上青霄 十亩藤花落古香 无力蔷薇卧晓枝 我愿暂求造化力 减却牡丹妖艳色 花非花 梦非梦 花如梦 梦似花 梦里有花 花开如梦 心非心 镜非镜 心如镜 镜似心 镜中有心 心如明镜 ​​转载于:https://www.cnblogs.com/langdao/p/1099281…

js图片库 案例

事件处理函数&#xff1a;事件处理函数的作用是&#xff0c;在特定事件发生时调用特定的JavaScript代码。本例中想要在用户点击某个链接的时候触发一个动作&#xff0c;所以需要使用onclick事件处理函数。 添加事件处理函数的语法&#xff1a; event"JavaScript statement…

hitchhiker部署_《 Hitchhiker的React Router v4指南》:路由配置的隐藏值

hitchhiker部署Welcome to the Hitchhiker’s Guide to React Router v4, Part IV!欢迎来到《 React Router v4旅行者指南》&#xff0c;第四部分&#xff01; Now that we’ve learned about recursive routes, let’s get back to our initial boilerplate, to avoid mixing…

亮剑:PHP,我的未来不是梦(11)

2. 再说说“必备能力”说道能力&#xff0c;很多应届毕业生都愿意给自己的点评是“我的学习能力很强”或者是“具有良好的学习意识”等。这里存在着这样一个误区&#xff01;把企业当成了学校&#xff01;当成了试验室&#xff01;把老板当成了老师&#xff01;作为用人单位&am…

leetcode457. 环形数组循环

给定一个含有正整数和负整数的环形数组 nums。 如果某个索引中的数 k 为正数&#xff0c;则向前移动 k 个索引。相反&#xff0c;如果是负数 (-k)&#xff0c;则向后移动 k 个索引。因为数组是环形的&#xff0c;所以可以假设最后一个元素的下一个元素是第一个元素&#xff0c;…

Jquery的ajax提交成功后刷新页面

转载于:https://www.cnblogs.com/huoxiansudi/p/6646855.html

程序员编程经验_在没有实际编程的情况下成为更好的程序员

程序员编程经验In this talk, Ryan Johnson explains what was for him the invisible step to becoming a better developer.在演讲中&#xff0c;瑞安约翰逊(Ryan Johnson)解释了对他来说&#xff0c;成为更好的开发人员这一无形的步骤。 You can watch the full video on t…