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]');
输出结果为:
热门文章
优秀文章