SQL Server 运算符

SQL Server (Transact-SQL) LIKE 运算符在 WHERE 子句中使用在指定列中搜索指定模式。与 LIKE 运算符结合使用的通配符如下:

注意:NOT LIKE 运算符是 LIKE 的否定 运算符。

SQL Server 中的通配符

符号描述示例
%表示零个、一个或多个字符。"J%"表示以"J"开头的值,例如 - John、Jo 和 Jack等
_代表一个字符。'_o%'代表其中包含"o"的值 第二个位置,例如 - John、Jo 和 Journey 等。
[]表示 [] 内指定的任何单个字符。'[ack]%'表示以a、c或k开头的值,例如-ant、cat或kite等。
-表示字符范围。'[a-d]%'表示以a、b、c或d开头的值,例如-ant、bat、cat或dog等。
[^]表示[]内未指定的任意字符。'[^ack]%'表示不指定的值 以 a、c 或 k 开头,例如 - bat、dog或rat等。

语法

在 SQL Server 中使用 LIKE 运算符的语法(Transact- SQL) 如下:

SELECT column1, column2, ...
FROM table_name
WHERE column LIKE pattern; 

下表描述了与 LIKE 运算符一起使用的模式,并使用 (%) 和 (_)。

模式描述
'J%'以"J"开头的值。
'%n'以"n"结尾的值。
'%oh%'任意位置有"oh"的值。
'_o%'第二个位置有"o"的值。
'J_%'A 以"J"开头且至少包含 2 个字符的值。
'J__%'以"J"开头且至少包含 2 个字符的值。 至少 3 个字符。
'J%n'以"J"开头并以"n"结尾的值。

示例:

考虑一个数据库,其中包含一个名为 Employee 的表,其中包含以下记录:

EmpIDNameCityAgeSalary
1JohnLondon253000
2MarryNew York242750
3JoParis272800
4KimAmsterdam303100
5RameshNew Delhi283000
6HuangBeijing282800

使用%通配符:要选择Employee表中Name以"Jo"开头的所有记录,查询如下.

SELECT * FROM Employee
WHERE Name LIKE 'Jo%'; 

这将产生如下所示的结果:

EmpIDNameCityAgeSalary
1JohnLondon253000
3JoParis272800

将 % 通配符与 NOT LIKE 运算符一起使用:NOT LIKE 运算符用作 LIKE 运算符的否定。例如,要选择 Employee 表中 Name 不以"Jo"开头的所有记录,可以使用以下查询:

SELECT * FROM Employee
WHERE Name NOT LIKE 'Jo%'; 

这将产生如下所示的结果:

EmpIDNameCityAgeSalary
2MarryNew York242750
4KimAmsterdam303100
5RameshNew Delhi283000
6HuangBeijing282800

使用_通配符:选择Employee表 Name 包含"o"作为第二个字符的的所有记录,查询如下。

SELECT * FROM Employee
WHERE Name LIKE '_o%'; 

上述代码的结果将是:

EmpIDNameCityAgeSalary
1JohnLondon253000
3JoParis272800

使用 [] 通配符 :选择 Employee 表中具有 Name 的所有记录以"K"、"R"或"M"开头,查询为:

SELECT * FROM Employee
WHERE Name LIKE '[KRM]%'; 

代码的结果将是:

EmpIDNameCityAgeSalary
2MarryNew York242750
4KimAmsterdam303100
5RameshNew Delhi283000

使用^通配符:选择Employee表中Name不以"K"、"R"或'M',查询为:

SELECT * FROM Employee
WHERE Name LIKE '[^KRM]%'; 

代码的结果将是:

EmpIDNameCityAgeSalary
1JohnLondon253000
3JoParis272800
6HuangBeijing282800

使用 - 通配符:要选择Employee表中Name以'G'到'J'开头的所有记录,查询为:

SELECT * FROM Employee
WHERE Name LIKE '[G-J]%'; 

代码产生的结果如下:

EmpIDNameCityAgeSalary
1JohnLondon253000
3JoParis272800
6HuangBeijing282800