SQL 通配符

SQL 通配符字符

通配符用于替换字符串中的一个或多个字符。

通配符与 LIKE 运算符一起使用。LIKE 运算符在 WHERE 子句中使用,用于在列中搜索指定的模式。

实例

返回所有以字母 'a' 开头的客户:

SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';

亲自试一试

通配符字符

符号 描述
% 代表零个或多个字符。
_ 代表单个字符。
[] 代表括号内的任意单个字符。*
^ 代表不在括号内的任意字符。*
- 代表在指定范围内的任意单个字符。*
{} 代表转义字符。**

* PostgreSQL 和 MySQL 数据库中不支持。

* 仅在 Oracle 数据库中支持。

演示数据库

以下是实例中使用的 Customers 表的片段:

CustomerID CustomerName ContactName Address City PostalCode Country
1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico
4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden

使用 % 通配符

% 通配符代表任意数量的字符,包括零个字符。

实例

返回所有以 'es' 结尾的客户:

SELECT * FROM Customers
WHERE CustomerName LIKE '%es';

亲自试一试

实例

返回包含 'mer' 模式的所有客户:

SELECT * FROM Customers
WHERE CustomerName LIKE '%mer%';

亲自试一试

使用 _ 通配符

_ 通配符代表单个字符。

它可以是任意字符或数字,但每个 _ 仅代表一个字符。

实例

返回所有城市名以任意字符开头,后跟 "ondon" 的客户:

SELECT * FROM Customers
WHERE City LIKE '_ondon';

亲自试一试

实例

返回所有城市名以 "L" 开头,后跟任意 3 个字符,并以 "on" 结尾的客户:

SELECT * FROM Customers
WHERE City LIKE 'L___on';

亲自试一试

使用 [] 通配符

如果 [] 通配符中的任何字符匹配,则返回结果。

实例

返回以 "b"、"s" 或 "p" 开头的所有客户:

SELECT * FROM Customers
WHERE CustomerName LIKE '[bsp]%';

亲自试一试

使用 - 通配符

- 通配符允许您在 [] 通配符内指定一系列字符。

实例

返回以 "a"、"b"、"c"、"d"、"e" 或 "f" 开头的所有客户:

SELECT * FROM Customers
WHERE CustomerName LIKE '[a-f]%';

亲自试一试

组合通配符

任何通配符,如 %_,都可以与其他通配符结合使用。

实例

返回所有以 "a" 开头且至少 3 个字符长的客户:

SELECT * FROM Customers
WHERE CustomerName LIKE 'a__%';

亲自试一试

实例

返回第二个位置有 "r" 的所有客户:

SELECT * FROM Customers
WHERE CustomerName LIKE '_r%';

亲自试一试

没有通配符

如果没有指定通配符,则短语必须完全匹配才能返回结果。

实例

返回来自西班牙的所有客户:

SELECT * FROM Customers
WHERE Country LIKE 'Spain';

亲自试一试

Microsoft Access 通配符

Microsoft Access 数据库提供了一些其他通配符:

符号 描述 例子
* 代表零个或多个字符 bl* 查找 bl、black、blue 和 blob
? 代表单个字符 h?t 查找 hot、hat 和 hit
[] 代表括号内的任意单个字符 h[oa]t 查找 hot 和 hat,但不查找 hit
! 代表不在括号内的任意字符 h[!oa]t 查找 hit,但不查找 hot 和 hat
- 代表在指定范围内的任意单个字符 c[a-b]t 查找 cat 和 cbt
# 代表任意单个数字字符 2#5 查找 205、215、225、235、245、255、265、275、285 和 295