SQL LIKE 通配符

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%'
SQL Server LIKE Wildcard % Percentage Sign Operator

此示例显示职业以字母 l 结尾的客户。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  WHERE [Occupation] LIKE N'%l'
Like Operator Wildcard Percentage Sign Example 2

以下 Sql Server Like 运算符通配符查询选择职业以字母 M 开头并以 t 结尾的客户。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  WHERE [Occupation] LIKE N'M%t'
Using Percentage to display text start and end with characters 4

下面的 服务器 查询返回职业中包含 Ma 的客户,不限位置。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  WHERE [Occupation] LIKE N'%Ma%'
% in the middle

_ 通配符下划线

下划线 (_) 代表一个字符。以下 SQL Like 运算符 _ 通配符查询选择所有名字第二个字母为 o 的客户。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  WHERE [FirstName] LIKE N'_o%'
underscore sign

此 Like 通配符查询显示年收入在第二和第三位包含 00 的客户。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  WHERE [YearlyIncome] LIKE N'_00%'
Like Operator Wildcard _ and % sign

此查询显示名字至少有四个字符的客户。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  WHERE [FirstName] LIKE N'_%_%_%_%'
underscore and percentage

以下 Like 运算符通配符 _ 查询返回年收入以 8 开头并以 0 结尾的客户。这里,我们使用了 _ 符号,这意味着它将接受 8 和 0 之间的三个数字或单词。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  WHERE [YearlyIncome] LIKE N'8___0'
multiple underscores

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

此查询返回名字不以 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]%'
Using Character List Range

Like 通配符 [^] NOT

它作为 NOT 运算符。以下查询显示姓氏不以 M 和 Y 之间任何字母开头的客户。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  WHERE [LastName] LIKE N'[^M-Y]%'
^ Example

SQL NOT LIKE 运算符示例

此 Like 运算符也允许我们使用 NOT 关键字。例如,下面的查询显示名字不以 J 开头的客户。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  WHERE [FirstName] NOT LIKE N'J%'
Not Like Example

您也可以使用 [^字符列表] 通配符编写上述语句。此语句显示名字不以字母 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]%'
Not starts with two Alphabets

此语句从客户表中选择名字第二个位置没有 o 的客户。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  WHERE [FirstName] NOT LIKE N'_o%'
Not Underscore and Percentage

额外的通配符符号

您也可以将 Like 通配符字符 %、_ 作为文字字符使用。但是,您必须做一些额外的工作才能实现此目的。下表将向您展示一些示例。

符号输出
“10[%]”10%
[_]n_n
‘[-abcd]’-, a, b, c, d
‘[[]’[
‘]’]
‘abc[_]d%’abc_d,或 abc_def 等