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% |
JJarMajorMajority |
匹配 匹配 不匹配 不匹配 |
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_ |
UUKUSA |
不匹配 匹配 不匹配 |
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]% |
UUKUAEUSA |
不匹配 匹配 匹配 不匹配 |
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]% |
DoeReinhardtLunaDOR |
不匹配 不匹配 匹配 不匹配 匹配 不匹配 |
不同数据库中的通配符
SQL Server
%- 零个或多个字符_- 单个字符[]- 方括号内的单个字符^- 不在方括号内的任何字符-- 范围内的单个字符
PostgreSQL 和 MySQL
%- 零个或多个字符_- 单个字符
Oracle
%- 零个或多个字符_- 单个字符[]- 方括号内的单个字符{}- 转义字符