目录

SQL 通配符


SQL 通配符

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

通配符与 LIKE运算符。这LIKE运算符用于 WHERE子句在列中搜索指定模式。

示例

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

SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';
亲自试一试 »

通配符

Symbol Description
% Represents zero or more characters
_ Represents a single character
[] Represents any single character within the brackets *
^ Represents any character not in the brackets *
- Represents any single character within the specified range *
{} Represents any escaped character **

* PostgreSQL 和 MySQL 数据库不支持。

** 仅在 Oracle 数据库中受支持。


演示数据库

以下是选自顾客示例中使用的表:

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%';
亲自试一试 »

使用 _ 通配符

这个_通配符代表单个字符。

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

示例

返回所有客户City以任意字符开头,后跟 "ondon":

SELECT * FROM Customers
WHERE City LIKE '_ondon';
亲自试一试 »

示例

返回所有客户City以"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 数据库还有一些其他通配符:

Symbol Description Example
* Represents zero or more characters bl* finds bl, black, blue, and blob
? Represents a single character h?t finds hot, hat, and hit
[] Represents any single character within the brackets h[oa]t finds hot and hat, but not hit
! Represents any character not in the brackets h[!oa]t finds hit, but not hot and hat
- Represents any single character within the specified range c[a-b]t finds cat and cbt
# Represents any single numeric character 2#5 finds 205, 215, 225, 235, 245, 255, 265, 275, 285, and 295

通过练习测试一下

练习:

选择第二个字母所在的所有记录City是"a"。

SELECT * FROM Customers
WHERE City LIKE '%';

开始练习