SQL Server LIKE 运算符提取值与指定模式匹配的记录。通配符应与 LIKE 运算符一起使用。例如,如果您忘记了公司或产品的拼写,您可以使用该运算符和通配符来检索所需信息。
此处通配符将有助于替换缺失的单词。SQL Server 支持以下 LIKE 通配符。
| 通配符 | 描述 |
|---|---|
| % | 它代表零个或多个字符。 |
| _ | 它代表恰好一个字符。 |
| [字符列表或范围] | 选择与方括号中存在的字符或字符范围完全匹配的记录 |
| [^字符列表或范围] | 选择与方括号中存在的字符或字符范围不匹配的记录 |
让我们通过示例来看看如何将通配符与 LIKE 运算符一起使用。对于此演示,我们使用下面显示的数据。

SQL Like 通配符 % 百分号
Like 通配符百分号 (%) 代表零个或多个字符。例如,以下 % 查询返回所有名字以字母 J 开头的客户。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [FirstName] LIKE N'J%'

此示例显示职业以字母 l 结尾的客户。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [Occupation] LIKE N'%l'

以下 Sql Server Like 运算符通配符查询选择职业以字母 M 开头并以 t 结尾的客户。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [Occupation] LIKE N'M%t'

下面的 服务器 查询返回职业中包含 Ma 的客户,不限位置。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [Occupation] LIKE N'%Ma%'

_ 通配符下划线
下划线 (_) 代表一个字符。以下 SQL Like 运算符 _ 通配符查询选择所有名字第二个字母为 o 的客户。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [FirstName] LIKE N'_o%'

此 Like 通配符查询显示年收入在第二和第三位包含 00 的客户。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [YearlyIncome] LIKE N'_00%'

此查询显示名字至少有四个字符的客户。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [FirstName] LIKE N'_%_%_%_%'

以下 Like 运算符通配符 _ 查询返回年收入以 8 开头并以 0 结尾的客户。这里,我们使用了 _ 符号,这意味着它将接受 8 和 0 之间的三个数字或单词。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [YearlyIncome] LIKE N'8___0'

SQL Server LIKE 通配符 [] 字符列表
使用 Like [](字符列表)通配符搜索多个项目。例如,它返回客户表中所有名字以字母 C 或 J 开头的客户。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [FirstName] LIKE N'[CJ]'
![Using Like [] Character List](https://tutorialgateway.cn/wp-content/uploads/SQL-LIKE-Wildcard-10.png)
此查询返回名字不以 C 或 J 开头的客户。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [FirstName] LIKE N'[^CJ]%'

使用字符列表范围的 Like 通配符示例
使用此字符范围通配符 Like 运算符搜索一系列字母等。此查询返回客户表中所有姓氏以 M 和 Y 之间任何字母开头的客户。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [LastName] LIKE N'[M-Y]%'

Like 通配符 [^] NOT
它作为 NOT 运算符。以下查询显示姓氏不以 M 和 Y 之间任何字母开头的客户。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [LastName] LIKE N'[^M-Y]%'

SQL NOT LIKE 运算符示例
此 Like 运算符也允许我们使用 NOT 关键字。例如,下面的查询显示名字不以 J 开头的客户。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [FirstName] NOT LIKE N'J%'

您也可以使用 [^字符列表] 通配符编写上述语句。此语句显示名字不以字母 C 或 J 开头的客户。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [FirstName] NOT LIKE N'[CJ]%'

下面的查询返回客户表中姓氏不以 M 或 Z 之间字母开头的记录。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [LastName] NOT LIKE N'[M-Z]%'

此语句从客户表中选择名字第二个位置没有 o 的客户。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
WHERE [FirstName] NOT LIKE N'_o%'

额外的通配符符号
您也可以将 Like 通配符字符 %、_ 作为文字字符使用。但是,您必须做一些额外的工作才能实现此目的。下表将向您展示一些示例。
| 符号 | 输出 |
|---|---|
| “10[%]” | 10% |
| [_]n | _n |
| ‘[-abcd]’ | -, a, b, c, d |
| ‘[[]’ | [ |
| ‘]’ | ] |
| ‘abc[_]d%’ | abc_d,或 abc_def 等 |