SQL 中的通配符与 LIKE
子句一起使用,用于替换字符串中的单个字符或一组字符。
%
和 _
是 SQL 中两个常用的通配符。
示例
-- select customers who live in countries
-- that start with 'US' followed by a single character
SELECT *
FROM Customers
WHERE country LIKE 'US_'
这里,_
是一个通配符,表示字符串后面正好有一个字符。
因此,SQL 查询会选择 country
以 US
开头,并且后面只有一个字符的客户。
SQL 通配符语法
SQL 通配符的语法是
SELECT column1, column 2, ...
FROM table
WHERE column LIKE 'Wildcard String';
这里,
column1, column2, ...
是用于选择数据的列table
是表的名称。column
是我们想要应用过滤器的列LIKE
将column
与Wildcard String
匹配Wildcard String
是字符串和通配符的组合
例如,
-- select rows where the last name
-- of customers start with R
SELECT *
FROM Customers
WHERE last_name LIKE 'R%';
这里,%
(零个或多个字符)是一个通配符。因此,SQL 命令会选择 last_name 以 R 开头,后面跟零个或多个字符的客户。

推荐阅读: SQL LIKE 运算符
SQL 中的 % 通配符
SQL 中的 %
通配符用于表示零个或多个字符。例如,
-- select rows where the first names
-- of customers start with J
SELECT *
FROM Customers
WHERE first_name LIKE 'J%';
这里,SQL 命令会选择姓氏以 J
开头,后面跟零个或多个字符的客户。
表达式 | 字符串 | 匹配? |
---|---|---|
J% |
J Jar Major Majority |
匹配 匹配 不匹配 不匹配 |
SQL 中的 _ 通配符
SQL 中的 _
通配符用于表示字符串中正好一个字符。例如,
-- select customers whose countries start with U
-- followed by a single character
SELECT *
FROM Customers
WHERE country LIKE 'U_';
这里,SQL 命令会选择 country 名称以 U 开头,并且后面只有一个字符的客户。
表达式 | 字符串 | 匹配? |
---|---|---|
U_ |
U UK USA |
不匹配 匹配 不匹配 |
SQL 中的 [] 通配符
SQL 中的 []
通配符用于表示方括号内的任何一个字符。例如,
-- select customers with country that starts with UK or UA
-- and is followed by any number of characters
SELECT *
FROM Customers
WHERE country LIKE 'U[KA]%';
这里,SQL 命令会选择 country 名称以 U 开头,后面是 K 或 A,再后面是任意数量字符的客户。
表达式 | 字符串 | 匹配? |
---|---|---|
U[KA]% |
U UK UAE USA |
不匹配 匹配 匹配 不匹配 |
SQL 中的 ! 通配符
SQL 中的 !
通配符用于从字符串中排除字符。例如,
--select rows where customer's last names don't start with D or R
SELECT *
FROM Customers
WHERE last_name LIKE '[!DR]%';
这里,SQL 命令会选择 last_name 不以 D 或 R 开头的客户。
表达式 | 字符串 | 匹配? |
---|---|---|
[!DR]% |
Doe Reinhardt Luna D O R |
不匹配 不匹配 匹配 不匹配 匹配 不匹配 |
不同数据库中的通配符
SQL Server
%
- 零个或多个字符_
- 单个字符[]
- 方括号内的单个字符^
- 不在方括号内的任何字符-
- 范围内的单个字符
PostgreSQL 和 MySQL
%
- 零个或多个字符_
- 单个字符
Oracle
%
- 零个或多个字符_
- 单个字符[]
- 方括号内的单个字符{}
- 转义字符