MySQL Wildcards通配符

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

在正常比较中,我们使用两个字符串,其中两个字符串的每个字符都应该在给出输出之前完全匹配。在通配符中,它们提供了在字符串中使用单个字符或一组字符的灵活性,这对于另一个字符串是可以接受的。

MySQL将通配符与LIKE或NOT LIKE比较运算符结合使用。LIKE 运算符与WHERE 子句一起使用在列中查找指定模式的结果。

一、MySQL Wildcards通配符 优点

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

  • 它提高了应用程序的性能。
  • 它节省了从表中过滤记录的时间。
  • 它使复杂查询的使用变得非常容易和快速。
  • 它使我们能够将强大的搜索引擎开发到大型数据驱动的应用程序中。

二、MySQL Wildcards通配符 类型

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

通配符 说明
% 该符号表示零个或多个字符。
_ 此符号用于精确匹配一个(单个)字符。

现在,我们将通过以下示例了解这些通配符在 MySQL 中的使用:

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

三、百分比符号(%)

百分比符号(%)用于从表中搜索或过滤指定 0、1 或更多字符的记录。我们可以在 LIKE 子句的第一个位置、最后一个位置或字符串的两侧使用它。

语法

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

SELECT * FROM tab_name WHERE column_name LIKE 'X%';  
OR,  
SELECT * FROM tab_name WHERE column_name LIKE '%X';  
OR,  
SELECT * FROM tab_name WHERE column_name LIKE 'X%X';  

在上面的语法中,' X ' 指定任意单个字符,%匹配任意数量的字符。

示例

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

mysql> SELECT * FROM employees WHERE city LIKE 'F%';  

它将给出以下输出:

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

mysql> SELECT * FROM employees WHERE city LIKE 'a%a';  

执行成功后,我们会得到如下结果:

此语句返回 X 值可以在任何位置的所有员工:

mysql> SELECT * FROM employees WHERE city LIKE '%n%';  

它将给出如下输出:

如果我们想从表中返回城市不是以'a'开头并以'a'字符结尾的所有员工,请执行以下语句:

mysql> SELECT * FROM employees WHERE city NOT LIKE 'a%a';  

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

四、下划线(_)

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

语法

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

SELECT * FROM tab_name WHERE column_name LIKE 'X_';  
OR,  
SELECT * FROM tab_name WHERE column_name LIKE '_X';  

在上面的语法中,'X ' 指定任何字符串模式,而_符号正好匹配一个字符。

示例

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

SELECT * FROM employees WHERE emp_age LIKE '4_';  

我们将看到如下结果:

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

mysql> SELECT * FROM employees WHERE city LIKE '_lorida';  

执行成功后,我们会得到如下结果:

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

mysql> SELECT * FROM employees WHERE city NOT LIKE '_lorida';  

出现以下输出:

五、组合通配符

我们已经了解到通配符也可以作为两者的组合使用,让我们通过下面的例子来理解它。

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

mysql> SELECT * FROM employees WHERE city LIKE 'a_%_';  

我们可以得到以下输出:

六、连字符 (-)

当我们需要从表中过滤一定范围内的记录时,该符号用于返回结果。它是使用REGEXP_LIKE()函数的通配符的扩展版本。

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

mysql> SELECT * FROM employees WHERE REGEXP_LIKE(city, '[b-d]');  

执行成功后,我们会得到如下结果:

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

mysql> SELECT * FROM employees WHERE NOT REGEXP_LIKE(city, '[b-d]');  

输出结果为:

热门文章

优秀文章