当前位置: 首页 > 教程 > MariaDB >

MariaDB Like子句

精华
小牛编辑
121浏览
2023-03-14

在MariaDB中,当操作需要完全匹配时,LIKE子句与SELECT语句一起使用来检索数据。它可以与SELECTINSERTUPDATEDELETE语句一起使用。

它用于模式匹配并返回truefalse。用于比较的模式接受以下通配符:

  • "%"通配符:匹配字符数(0或更多)。
  • "_"通配符:匹配单个字符。它匹配其集合中的字符。

语法:

SELECT field, field2,... FROM table_name, table_name2,...  
WHERE field LIKE condition

1. 使用%通配符(百分号通配符)

假设我们有一个students表,并有以下数据。

MariaDB [testdb]> select * from students;
+------------+--------------+-----------------+----------------+
| student_id | student_name | student_address | admission_date |
+------------+--------------+-----------------+----------------+
|          1 | Maxsu        | Haikou          | 2017-01-07     |
|          3 | JMaster      | Beijing         | 2016-05-07     |
|          4 | Mahesh       | Guangzhou       | 2016-06-07     |
|          5 | Kobe         | Shanghai        | 2016-02-07     |
|          6 | Blaba        | Shengzhen       | 2016-08-07     |
|          7 | Maxsu        | Sanya           | 2017-08-08     |
+------------+--------------+-----------------+----------------+
6 rows in set (0.00 sec)

现在想要查询那些名字以Ma字母开头的所有学生信息,那么就可以使用LIKE条件的通配符来查找所有以Ma开头的名字。参考以下查询语句 -

SELECT student_name  
FROM students  
WHERE student_name LIKE 'Ma%';

执行上面查询语句,得到以下结果 -

MariaDB [testdb]> SELECT student_name
    -> FROM students
    -> WHERE student_name LIKE 'Ma%';
+--------------+
| student_name |
+--------------+
| Maxsu        |
| Mahesh       |
| Maxsu        |
+--------------+
3 rows in set (0.07 sec)

也可以在同一个字符串中多次使用通配符。例如,要查询名字中包含'Ma'字符的所有记录 -

SELECT student_name  
FROM students
WHERE student_name LIKE '%Ma%';

执行上面查询语句,得到以下结果 -

MariaDB [testdb]> SELECT student_name
    -> FROM students
    -> WHERE student_name LIKE '%Ma%';
+--------------+
| student_name |
+--------------+
| Maxsu        |
| JMaster      |
| Mahesh       |
| Maxsu        |
+--------------+
4 rows in set (0.00 sec)

2. 使用_通配符(下划线通配符)

使用带LIKE条件的通配符。`(下划线)通配符只检查一个字符。下面语句将查询名字为“Max_u”`的学生信息。

SELECT *  
FROM students
WHERE student_name LIKE 'Max_u';

执行上面查询语句,得到以下结果 -

MariaDB [testdb]> SELECT *
    -> FROM students
    -> WHERE student_name LIKE 'Max_u';
+------------+--------------+-----------------+----------------+
| student_id | student_name | student_address | admission_date |
+------------+--------------+-----------------+----------------+
|          1 | Maxsu        | Haikou          | 2017-01-07     |
|          7 | Maxsu        | Sanya           | 2017-08-08     |
+------------+--------------+-----------------+----------------+
2 rows in set (0.00 sec)

3. LIKE子句使用NOT运算符

在MariaDB中,LIKE子句可以使用NOT运算符。在NOT运算符中使用通配符。 在这个示例中,将是查询名字不是以"Ma"开头的所有学生信息。

SELECT *  
FROM students
WHERE student_name NOT LIKE 'Ma%';

执行上面查询语句,得到以下结果 -

MariaDB [testdb]> SELECT *
    -> FROM students
    -> WHERE student_name NOT LIKE 'Ma%';
+------------+--------------+-----------------+----------------+
| student_id | student_name | student_address | admission_date |
+------------+--------------+-----------------+----------------+
|          3 | JMaster      | Beijing         | 2016-05-07     |
|          5 | Kobe         | Shanghai        | 2016-02-07     |
|          6 | Blaba        | Shengzhen       | 2016-08-07     |
+------------+--------------+-----------------+----------------+
3 rows in set (0.00 sec)