MySQL 通配符

17 Mar 2025 | 4 分钟阅读

MySQL 中的通配符是允许我们非常轻松快速地从表中搜索复杂数据的字符。它通过替换一个或多个字符来处理字符串,并在匹配表中的字符串后产生结果。

在普通比较中,我们使用两个字符串,其中两个字符串的每个字符都必须完全匹配才能输出。而在通配符中,它们提供了灵活性,可以使用单个字符或一组字符来匹配另一个字符串。

MySQL 将通配符与LIKENOT LIKE 比较运算符结合使用。LIKE 运算符与 WHERE 子句一起使用,以根据列中的指定模式查找结果。

通配符的优点

MySQL 的通配符具有以下优点:

  • 它提高了应用程序的性能。
  • 它节省了从表中筛选记录的时间。
  • 它使复杂的查询能够轻松快速地转化为简单的查询。
  • 它使我们能够在大型数据驱动的应用程序中开发强大的搜索引擎。

通配符的类型

以下是 MySQL 中常用的通配符类型,可以单独使用,也可以组合使用:

序号通配符符号描述
1.%此符号表示零个或多个字符。
2._此符号用于匹配正好一个(单个)字符。

现在,我们将通过以下示例来理解这些通配符符号在 MySQL 中的用法。

让我们先创建一个名为“employee”的表,其中包含以下数据:

MySQL Wildcards

1. 百分号(%)

它用于搜索或筛选表中指定 0、1 或多个字符的记录。我们可以将其用于 LIKE 子句中字符串的开头、结尾或两端。

语法

使用此通配符字符的基本语法是:

在上述语法中,'X' 表示任何单个字符,而 % 匹配任意数量的字符。

示例

此语句返回所有城市名称以“F”开头的员工。

它将提供以下输出

MySQL Wildcards

同样,此语句返回表中城市名称以“a”开头并以“a”结尾的所有员工。

成功执行后,我们将获得以下结果:

MySQL Wildcards

此语句返回 X 值可能出现在任何位置的所有员工。

它将输出如下:

MySQL Wildcards

如果我们想返回表中城市名称不以“a”开头并以“a”结尾的所有员工,请执行以下语句:

我们将看到以下结果,其中我们可以看到没有城市名称以“a”开头并以“a”结尾。

MySQL Wildcards

2. 下划线符号(_)

当需要从表中返回与任何位置的单个字符完全匹配的结果时,我们可以使用它。

语法

使用此通配符字符的基本语法是:

在上述语法中,'X' 表示任何字符串模式,而 _ 符号正好匹配一个字符。

示例

此语句返回年龄在 40 到 49 岁之间的所有员工。

我们将看到如下结果:

MySQL Wildcards

此语句返回表中城市名称以任何字符开头,后跟“lorida”字符的所有员工。

成功执行后,我们将获得以下结果:

MySQL Wildcards

如果我们想返回表中城市名称不以任何字符开头,后跟“lorida”字符的所有员工,请执行以下语句:

出现以下输出

MySQL Wildcards

组合通配符

我们已经了解到通配符也可以组合使用,下面让我们通过示例来理解它。

此语句返回所有姓名以 X 开头且长度至少为两个字符的员工。

我们将获得以下输出:

MySQL Wildcards

这是另一个产生输出的示例,其中所有员工的收入列中第二个位置的数字是'5'。

我们可以得到以下输出:

MySQL Wildcards

3. 连字符符号(-)

此符号用于在需要按特定范围过滤表中记录时返回结果。它是通配符字符的扩展版本,使用 REGEXP_LIKE() 函数。

此语句如下所示,获取 employees 表中城市包含字母 'b'、'c' 或 'd' 的所有记录:

输出

成功执行后,我们将获得以下结果:

MySQL Wildcards

如果我们想返回表中城市不包含字母 'b'、'c' 或 'd' 的所有员工,如下所示:

输出

MySQL Wildcards
下一个主题MySQL 别名