SQL Server 通配符[]查询(三)

时间煮雨
@R星校长

3关:通配符[]的使用

如何使用通配符 [] 模糊匹配数据内容

通配符[]是个中括号,一看就知道里面是应该放点什么内容,放点什么呢?它又有什么作用呢?

[]用于将一组字符囊括在内,这一组字符之间是或的关系,而通配符[]出现的位置也严格匹配于括号中出现的字符在整个字符串中的位置。

是不是有点抽象?一会儿我们举个例子你就明白了,先来看看语法吧。

语法规则为:

SELECT 字段名 
 FROM 表名  
 WHERE  字段名 LIKE '[数据]' 

举个例子

我们想从表Customers中,检索到所有cust_nameat开头的消费者的所有数据。表Customers的内容如下图所示:

在这里插入图片描述
输入:

SELECT *
FROM Customers
WHERE cust_name LIKE '[at]%'

输出:

在这里插入图片描述

检索过程为:

在这里插入图片描述

分析: 我们在语法中加入了通配符 % 。因为通配符 [] 中出现的只能是有关系的 单字符 。所以除非你想检索的是单字符,否则不加 % 的话,你将检索不到任何内容。

Tips: 注意,通配符中的字符大小写不敏感 !

使用通配符[]^模糊匹配取反的数据内容

我们还可以对检索内容进行“取反”。使用符号^后,我们可以成功的检索到 []中没出现的字符。

语法规则为:

SELECT 字段名 
 FROM 表名  
 WHERE  字段名 LIKE '[^数据]' 

举个例子

我们想从表Customers中,检索到所有cust_name不是以at开头的消费者的所有数据。表Customers的内容如下图所示:

在这里插入图片描述

输入:

SELECT *
FROM Customers
WHERE cust_name LIKE '[^at]%'

输出:

在这里插入图片描述
检索过程为:

在这里插入图片描述

分析: 当然,你也可以使用 NOT 操作符来得到相同的结果。相比来说,^ 唯一的好处就是简化了 WHERE 语句的语法。

举个例子

SELECT *
FROM Customers
WHERE NOT cust_name LIKE '[at]%'

Tips: 在本实训最后一关,希望大家能格外注意这 3 条使用规则:

  • 不要过分使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。
  • 在确实需要使用通配符时,除非绝对有必要,否则不要把他们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。
  • 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。

下面轮到你们来试一试了。

编程要求

我们已经为你建好了数据库与数据表,并添加了相应的数据内容。你只需补全右侧代码片段中 retrieving with wildcard []Begin-End 区间的代码,检索表 Products中所有不以B为起始字符的产品的所有内容。

其中表 Products 的内容如下图所示:
在这里插入图片描述
测试说明

测试过程:

本关涉及到的测试文件是step3_test.sh,平台将运行用户补全的step3.sql文件,得到数据;

将得到的数据与答案比较,判断代码是否正确。

如果操作正确,你将得到如下的结果:

在这里插入图片描述
开始你的任务吧,祝你成功!

USE Mall
Go

SET NOCOUNT ON

---------- retrieving with wildcard [] ----------
-- ********** Begin ********** --

SELECT * FROM Products WHERE prod_name LIKE '[^B]%';


-- ********** End ********** --

GO

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44745905/article/details/110588870