请添加图片描述

通配符 % 的使用

使用通配符%模糊匹配数据内容的后半部分
在所有通配符中,最常用的通配符要数 % 了。使用了 % 就意味着,你能从现有的数据中匹配到任意个数的字符(注意,可以是不止一个字符哟)。

语法规则为:

SELECT 字段名
FROM 表名
WHERE 字段名 LIKE ‘数据%’;
举个例子
我们想从表 Customers 中检索到所有叫 Alice 的消费者的所有数据。表 Customers 的内容如下图所示。大家可以看到,我们有 Alice Nicholas 和 Alice Edwards 两个都叫 Alice 的人,该如何做才能同时匹配到他们两个呢?
在这里插入图片描述
在这个例子里,我们使用了模糊匹配模式 Alice% ,运行后,数据库会检索出所有以 Alice 为开头的字符串来,无论 Alice 后有多长的字符串数据库都能检索出来。

Tips:
注意,模式匹配是大小写敏感的!如果你检索的是 alice% ,那就什么都检索不到了!

使用通配符%模糊匹配数据内容的任意部分

代码

USE Mall
Go

SET NOCOUNT ON

---------- retrieving with wildcard % ----------
-- ********** Begin ********** --
SELECT *
FROM Products
WHERE prod_name like '%toy'


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

GO

通配符 _ 的使用

使用通配符_模糊匹配数据内容
另一个很实用的通配符是下划线 _ ,它的使用规则与 % 类似,唯一与 % 不同的是:% 能匹配多个字符,而 _ 只能匹配一个字符!

语法规则为:

SELECT 字段名
FROM 表名
WHERE 字段名 LIKE ‘数据和_的组合’
举个例子
我们想从表 Customers 中检索到 cust_id 尾数只有个位数的消费者的所有数据。表 Customers 的内容如下图所示。大家可以看到,我们只有一个 cust_id 尾数为两位数的消费者 Sol Pozo ,该如何撇开它呢?
在这里插入图片描述

代码

USE Mall
Go

SET NOCOUNT ON

---------- retrieving with wildcard _ ----------
-- ********** Begin ********** --
 SELECT * 
 FROM Products 
 WHERE  prod_name not LIKE '_ inch Lion toy' 


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

GO

通配符 [] 的使用

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

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

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

语法规则为:

SELECT 字段名
FROM 表名
WHERE 字段名 LIKE ‘[数据]’
举个例子
我们想从表 Customers 中,检索到所有 cust_name 以 a 和 t 开头的消费者的所有数据。表 Customers 的内容如下图所示:

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

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

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

语法规则为:

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

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

举个例子

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

代码

USE Mall
Go

SET NOCOUNT ON

---------- retrieving with wildcard [] ----------
-- ********** Begin ********** --
SELECT * 
FROM Products 
WHERE  prod_name LIKE '[^B]%' 



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

GO
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐