MySQL 通配符
MySQL中的通配符是允许我们非常轻松和快速地从表中搜索复杂数据的字符。它通过替换一个或多个字符来处理字符串,并在将字符串与表进行匹配后生成结果。
在普通比较中,我们使用两个字符串,每个字符串的每个字符在给出输出之前都需要完全匹配。而在通配符中,它们提供了使用单个字符或一组字符的灵活性,在另一个字符串中是可以接受的。
MySQL 将通配符与 LIKE 或 NOT LIKE 比较运算符一起使用。LIKE运算符与 WHERE子句 结合使用,在列中查找指定模式的结果。
通配符的优势
MySQL具有以下通配符的优势:
- 提高应用程序的性能。
- 在从表中过滤记录时节省时间。
- 将复杂查询转换为简单的查询非常轻松和快速。
- 允许我们将强大的搜索引擎应用于大型数据驱动的应用程序。
通配符的类型
以下是MySQL中常用的通配符类型,可以单独使用或结合使用:
SN | 通配符符号 | 描述 | |
---|---|---|---|
1. | % |
此符号表示零个或多个字符。 | |
2. | _ |
此符号用于匹配一个(单个)字符。 |
现在,我们将通过以下示例了解在MySQL中使用这些通配符符号的用法:
首先,让我们创建一个名为“ employee ”的表,其中包含以下数据:
1. 百分号符号(%)
它用于从表中搜索或过滤指定了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”结尾的城市名。
2. 下划线符号(_)
我们可以在需要从表格中返回与任意位置上的单个字符完全匹配的结果时使用它。
语法
使用此通配符的基本语法为:
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_%_';
我们将得到如下输出:
这是另一个示例,它生成了输出结果,其中所有在 “income” 列第二个位置具有 ‘5’ 的雇员:
mysql> SELECT * FROM employees WHERE income LIKE '_5%';
我们可以获得以下输出:
3. 连字符符号(-)
这个符号用于在特定范围内从表格中过滤记录时返回结果。它是通配符字符的扩展版本,使用 REGEXP_LIKE() 函数。
以下语句从员工表中获取包含字母’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]');
输出