MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式
模式匹配的格式。
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%";
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+
为了找出包含正好5个字符的名字,使用“_”模式字符:
mysql> SELECT * FROM pet WHERE name LIKE "_____";
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+
由MySQL提供的模式匹配的其他类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用
REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。
扩展正则表达式的一些字符是:
“.”匹配任何单个的字符。
一个字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。
为了命名字符的一个范围,使用一个“-”。“[a-z]”匹配任何小写字母,而“[0-9]”匹配任
何数字。
“ * ”匹配零个或多个在它前面的东西。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”
匹配的任何数量的数字,而“.*”匹配任何数量的任何东西。
正则表达式是区分大小写的,但是如果你希望,你能使用一个字符类匹配两种写法。例如,
“[aA]”匹配小写或大写的“a”而“[a-zA-Z]”匹配两种写法的任何字母。
如果它出现在被测试值的任何地方,模式就匹配(只要他们匹配整个值,SQL模式匹配)。
为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的
结尾用“$”。
为了说明扩展正则表达式如何工作,上面所示的LIKE查询在下面使用REGEXP重写:
为了找出以“b”开头的名字,使用“^”匹配名字的开始并且“[bB]”匹配小写或大写的“b”:
mysql> SELECT * FROM pet WHERE name REGEXP "^[bB]";
+--------+--------+---------+------+------------+------------+
| 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 REGEXP "fy$";
+--------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+-------+
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+--------+--------+---------+------+------------+-------+
为了找出包含一个“w”的名字,使用“[wW]”匹配小写或大写的“w”:
mysql> SELECT * FROM pet WHERE name REGEXP "[wW]";
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+
既然如果一个正规表达式出现在值的任何地方,其模式匹配了,就不必再先前的查询中在模式的两
方面放置一个通配符以使得它匹配整个值,就像如果你使用了一个SQL模式那样。
为了找出包含正好5个字符的名字,使用“^”和“$”匹配名字的开始和结尾,和5个“.”实例在
两者之间:
mysql> SELECT * FROM pet WHERE name REGEXP "^.....$";
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+
你也可以使用“{n}”“重复n次”操作符重写先前的查询:
mysql> SELECT * FROM pet WHERE name REGEXP "^.{5}$";
+-------+--------+---------+------+------------+-------+
| name | owner | species | sex | birth | death |
+-------+--------+---------+------+------------+-------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
+-------+--------+---------+------+------------+-------+
查找数字和其他的模糊查询语句
Select * from pet where name REGEXP "[^a-zA-Z].";
分享到:
相关推荐
MySQL的模糊查询是数据库操作中一个非常实用的功能,它允许我们使用特定的通配符来匹配不完全确定的数据。在MySQL中,有两种主要的模糊查询方式:标准的SQL模式匹配和基于正则表达式的模式匹配。 1. **SQL模式匹配*...
本文将详细介绍MySQL中的模糊查询语法及其应用场景。 #### 二、模糊查询概述 模糊查询通常用于在数据表中查找符合特定模式的数据记录。MySQL通过`LIKE`关键字支持模糊查询,可以使用不同的通配符来匹配数据。 ####...
在编程实现上,有许多库和工具支持模糊查询,例如Python的`fuzzywuzzy`库可以计算字符串的相似度,MySQL和PostgreSQL数据库系统内置了模糊查询功能。开发者还可以利用 Elasticsearch 这样的全文搜索引擎,它内置了...
### MySQL 常用查询语句详解 #### 一、查询数值型数据 - **基本语法**:`SELECT * FROM 表名 WHERE 条件;` - **示例**:`SELECT * FROM tb_name WHERE sum > 100;` - 这里使用了比较运算符 `>` 来筛选 `sum` 字段...
而"查询语句.txt"可能包含了示例的查询语法,演示如何调用这个函数进行查询。 实现这一功能通常涉及以下步骤: 1. **拼音转换**:首先,我们需要将中文字符转换成其对应的拼音表示。这可以通过数据库系统内建的...
总之,“参照工具数据库数据多列模糊查询”涉及的关键技术包括SQL模糊查询语法、索引优化、全文检索以及数据库查询工具的使用。理解这些概念和技巧,将有助于我们在处理大量数据时更有效地进行信息检索。
在给定的部分内容中,可以看到三种不同的数据库(MySQL、Oracle、SQL Server)处理模糊查询的方式: - **MySQL**: ```xml SELECT * FROM user WHERE name LIKE CONCAT('%', #{empname}, '%') ``` - **...
MySQL表查询之条件查询 MySQL表查询之条件查询是 MySQL 中的一种重要查询方式,用于筛选和提取数据库中的数据。条件查询的目的是为了从大量的数据中提取出所需的数据,以满足特定的操作或报告的需求。 1. 筛选...
MySQL是一种广泛使用的开源关系型数据库...以上就是MySQL中的基础和高级SQL语法,它们构成了对数据库进行查询、更新、插入和删除等操作的核心工具。理解并熟练掌握这些概念和语句对于任何数据库操作都是非常重要的。
### 一、理解MySQL模糊搜索 在MySQL中,模糊搜索通常通过`LIKE`操作符来实现。例如,以下SQL语句用于查找标题中包含特定关键词的所有记录: ```sql SELECT * FROM table WHERE biaoti LIKE '%关键词%'; ``` 这种...
* 模糊查询 like:LIKE 像 像什么什么一样 * 排序关键字:ORDER BY 字段名 [ASC|DESC] MySQL 通配符有两个: * %:表示任意多个字符 * _:表示一个字符 约束 * PRIMARY KEY 主键约束 * UNIQUE 唯一约束 * NOT ...
- **通配符**: 使用 `LIKE` 操作符结合通配符 `%` 或 `_` 进行模糊匹配。 - 示例: `stockname LIKE '%findthis%'` - **区间查询**: `BETWEEN` 用于查找位于两个值范围内的数据。 - 示例: `stocknumber BETWEEN 20 ...
(3)模糊查询 like 像 LIKE关键字可以匹配字符串是否相等。如果字段的值与指定的字符串相匹配,则满足查询条件,该纪录将被查询出来。如果与指定的字符串不匹配,则不满足查询条件。其语法规则如下:[ NOT ] LIKE ...
**模糊查询**: - 允许用户使用关键词搜索数据,例如通过用户名或内容的一部分。 - PHP构建带有LIKE操作符的SQL查询,用于模糊匹配。 - 结果返回给前端展示,提供更灵活的搜索体验。 在实际项目中,还会涉及错误...
`LIKE` 是 MySQL 中最常用的模糊查询方式,它的基本语法如下: ```sql SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern; ``` 这里的 `pattern` 可以包含通配符,主要有两种: - `%`:代表...
本篇文章将详细介绍如何利用`Example`类实现对MySQL数据库中多个字段的模糊查询,以及与之相对的直接编写SQL语句的方式。 首先,`Example`类是MyBatis Generator自动生成的,它基于数据库表结构,提供了一种面向...