首页 > 文章列表 > 浅析MySQL模式匹配查询(标准SQL模式匹配和正则模式匹配)

浅析MySQL模式匹配查询(标准SQL模式匹配和正则模式匹配)

mysql
287 2023-04-13

在业务开发中,经常有需要模糊匹配某个字段的需求。比如按某个名字匹配,但用户可能只记得部分字,没记住全名,如果能支持模糊匹配那用户体验就会好很多。

MySQL 提供了标准SQL模式匹配以及一种基于扩展正则表达式的模式匹配,类似于 Unix 实用程序(如 vi、grep和 sed )使用的那些。

SQL模式匹配

SQL模式匹配使您能够用"_"匹配任何单个字符,使用"%"匹配任意数量的字符(包括零个字符)。

在MySQL中,SQL模式默认不区分大小写。不要在使用SQL模式时使用=或<>,请改用LIKE或者NOT LIKE运算符。

要查找以b开头的名称:

mysql> SELECT * FROM pet WHERE name LIKE 'b%';
+--------+--------+---------+------+------------+------------+
| name   | owner  | species | sex  | birth      | death      |
+--------+--------+---------+------+------------+------------+
| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL       |
| Bowser | Diane  | dog     | m    | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+

查找以fy结尾的名称:

mysql> SELECT * FROM pet WHERE name LIKE '%fy';
+--------+--------+---------+------+------------+-------+
| name   | owner  | species | sex  | birth      | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat     | f    | 1993-02-04 | NULL  |
| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL  |
+--------+--------+---------+------+------------+-------+

要查找包含w的名称:

mysql> SELECT * FROM pet WHERE name LIKE '%w%';
+----------+-------+---------+------ 来源:https://www.51cto.com/article/717380.html