- MySQL 基础
- MySQL - 首页
- MySQL - 简介
- MySQL - 特性
- MySQL - 版本
- MySQL - 变量
- MySQL - 安装
- MySQL - 管理
- MySQL - PHP 语法
- MySQL - Node.js 语法
- MySQL - Java 语法
- MySQL - Python 语法
- MySQL - 连接
- MySQL - Workbench
- MySQL 数据库
- MySQL - 创建数据库
- MySQL - 删除数据库
- MySQL - 选择数据库
- MySQL - 显示数据库
- MySQL - 复制数据库
- MySQL - 数据库导出
- MySQL - 数据库导入
- MySQL - 数据库信息
- MySQL 用户
- MySQL - 创建用户
- MySQL - 删除用户
- MySQL - 显示用户
- MySQL - 修改密码
- MySQL - 授权
- MySQL - 显示权限
- MySQL - 收回权限
- MySQL - 锁定用户帐户
- MySQL - 解锁用户帐户
- MySQL 表
- MySQL - 创建表
- MySQL - 显示表
- MySQL - 修改表
- MySQL - 重命名表
- MySQL - 克隆表
- MySQL - 截断表
- MySQL - 临时表
- MySQL - 修复表
- MySQL - 描述表
- MySQL - 添加/删除列
- MySQL - 显示列
- MySQL - 重命名列
- MySQL - 表锁定
- MySQL - 删除表
- MySQL - 派生表
- MySQL 查询
- MySQL - 查询
- MySQL - 约束
- MySQL - INSERT 查询
- MySQL - SELECT 查询
- MySQL - UPDATE 查询
- MySQL - DELETE 查询
- MySQL - REPLACE 查询
- MySQL - INSERT IGNORE
- MySQL - INSERT ON DUPLICATE KEY UPDATE
- MySQL - INSERT INTO SELECT
- MySQL 运算符和子句
- MySQL - WHERE 子句
- MySQL - LIMIT 子句
- MySQL - DISTINCT 子句
- MySQL - ORDER BY 子句
- MySQL - GROUP BY 子句
- MySQL - HAVING 子句
- MySQL - AND 运算符
- MySQL - OR 运算符
- MySQL - LIKE 运算符
- MySQL - IN 运算符
- MySQL - ANY 运算符
- MySQL - EXISTS 运算符
- MySQL - NOT 运算符
- MySQL - 不等于运算符
- MySQL - IS NULL 运算符
- MySQL - IS NOT NULL 运算符
- MySQL - BETWEEN 运算符
- MySQL - UNION 运算符
- MySQL - UNION 与 UNION ALL
- MySQL - MINUS 运算符
- MySQL - INTERSECT 运算符
- MySQL - INTERVAL 运算符
- MySQL 连接
- MySQL - 使用连接
- MySQL - INNER JOIN
- MySQL - LEFT JOIN
- MySQL - RIGHT JOIN
- MySQL - CROSS JOIN
- MySQL - FULL JOIN
- MySQL - 自连接
- MySQL - DELETE JOIN
- MySQL - UPDATE JOIN
- MySQL - UNION 与 JOIN
- MySQL 触发器
- MySQL - 触发器
- MySQL - 创建触发器
- MySQL - 显示触发器
- MySQL - 删除触发器
- MySQL - BEFORE INSERT 触发器
- MySQL - AFTER INSERT 触发器
- MySQL - BEFORE UPDATE 触发器
- MySQL - AFTER UPDATE 触发器
- MySQL - BEFORE DELETE 触发器
- MySQL - AFTER DELETE 触发器
- MySQL 数据类型
- MySQL - 数据类型
- MySQL - VARCHAR
- MySQL - BOOLEAN
- MySQL - ENUM
- MySQL - DECIMAL
- MySQL - INT
- MySQL - FLOAT
- MySQL - BIT
- MySQL - TINYINT
- MySQL - BLOB
- MySQL - SET
- MySQL 正则表达式
- MySQL - 正则表达式
- MySQL - RLIKE 运算符
- MySQL - NOT LIKE 运算符
- MySQL - NOT REGEXP 运算符
- MySQL - regexp_instr() 函数
- MySQL - regexp_like() 函数
- MySQL - regexp_replace() 函数
- MySQL - regexp_substr() 函数
- MySQL 函数 & 运算符
- MySQL - 日期和时间函数
- MySQL - 算术运算符
- MySQL - 数值函数
- MySQL - 字符串函数
- MySQL - 聚合函数
- MySQL 其他概念
- MySQL - NULL 值
- MySQL - 事务
- MySQL - 使用序列
- MySQL - 处理重复项
- MySQL - SQL 注入
- MySQL - 子查询
- MySQL - 注释
- MySQL - CHECK 约束
- MySQL - 存储引擎
- MySQL - 将表导出到 CSV 文件
- MySQL - 将 CSV 文件导入数据库
- MySQL - UUID
- MySQL - 通用表表达式
- MySQL - ON DELETE CASCADE
- MySQL - Upsert
- MySQL - 水平分区
- MySQL - 垂直分区
- MySQL - 游标
- MySQL - 存储函数
- MySQL - SIGNAL
- MySQL - RESIGNAL
- MySQL - 字符集
- MySQL - 校对
- MySQL - 通配符
- MySQL - 别名
- MySQL - ROLLUP
- MySQL - 当天日期
- MySQL - 字面量
- MySQL - 存储过程
- MySQL - EXPLAIN
- MySQL - JSON
- MySQL - 标准差
- MySQL - 查找重复记录
- MySQL - 删除重复记录
- MySQL - 选择随机记录
- MySQL - SHOW PROCESSLIST
- MySQL - 更改列类型
- MySQL - 重置自动递增
- MySQL - Coalesce() 函数
- MySQL 有用资源
- MySQL - 有用函数
- MySQL - 语句参考
- MySQL - 快速指南
- MySQL - 有用资源
- MySQL - 讨论
MySQL - MATCH 运算符
MySQL 的MATCH运算符用于在指定的列列表中搜索特定字符串,并在匹配的情况下返回列的内容。
此运算符使用全文索引执行搜索操作。全文索引是一种特殊的索引,允许对大型数据集进行高效的基于文本的搜索。
创建具有全文索引的表时,MySQL 会构建包含在指定列中的单词的索引。然后,MATCH 运算符使用此索引快速搜索与搜索条件匹配的字符串。
语法
以下是 MySQL MATCH 运算符的语法:
MATCH (col1,col2,...) AGAINST (expr [search_modifier]) search_modifier: { IN NATURAL LANGUAGE MODE | IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION | IN BOOLEAN MODE | WITH QUERY EXPANSION }
其中,
(col1, col2, ...) 是您要在其中进行搜索的列名列表,用逗号分隔。
expr 是表示要搜索的字符串的字符串值,作为参数。
示例
假设我们使用 CREATE 语句创建了一个名为“Tutorials_table”的表,并在其中插入了记录,除了“Contents”列:
CREATE TABLE Tutorials_table ( ID INT, Title VARCHAR(20), Contents LONGTEXT );
现在,让我们使用 INSERT 语句向其中插入记录:
INSERT INTO Tutorials_table (ID, Title) VALUES (1, 'Java'), (2, 'JavaFX'), (3, 'Coffee Script'), (4, 'OpenCV');
假设在 MySQL 数据目录中(例如:C:\ProgramData\MySQL\MySQL Server 8.0\Uploads)有 4 个文本文件:
java.txt
Java is a high-level programming language originally developed by Sun Microsystems and released in 1995. Java runs on a variety of platforms, such as Windows, Mac OS, and the various versions of UNIX.
Javafx.txt
JavaFX is a Java library used to build Rich Internet Applications. The applications written using this library can run consistently across multiple platforms. The applications developed using JavaFX can run on various devices such as Desktop Computers, Mobile Phones, TVs, Tablets, etc.
coffee.txt
CoffeeScript is a light weight language which transcompiles into JavaScript. It provides better syntax avoiding the quirky parts of JavaScript, still retaining the flexibility and beauty of the language.
opencv.txt
OpenCV is a cross-platform library using which we can develop real-time computer vision applications. It mainly focuses on image processing, video capture and analysis including features like face detection and object detection.
现在,让我们将上述文本文件的内容作为“Tutorials_table”表中“Contents”列的值:
UPDATE Tutorials_table SET Contents = LOAD_FILE('C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/java.txt') WHERE ID=1; UPDATE Tutorials_table SET Contents = LOAD_FILE('C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/javafx.txt') WHERE ID=2; UPDATE Tutorials_table SET Contents = LOAD_FILE('C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/coffee.txt') WHERE ID=3; UPDATE Tutorials_table SET Contents = LOAD_FILE('C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/opencv.txt') WHERE ID=4;
您可以使用以下 SELECT 查询验证表的内容:
SELECT * FROM Tutorials_table;
您可以观察到如下表所示的插入数据:
ID | 标题 | 内容 |
---|---|---|
1 | Java | Java 是一种高级编程语言,最初由 Sun Microsystems 开发,并于 1995 年发布。Java 运行在各种平台上,例如 Windows、Mac OS 和各种版本的 UNIX。 |
2 | JavaFX | JavaFX 是一个用于构建富互联网应用程序的 Java 库。使用此库编写的应用程序可以在多个平台上一致运行。使用 JavaFX 开发的应用程序可以在各种设备上运行,例如台式电脑、手机、电视、平板电脑等。 |
3 | Coffee Script | CoffeeScript 是一种轻量级语言,它可以编译成 JavaScript。它提供了更好的语法,避免了 JavaScript 中古怪的部分,同时保留了语言的灵活性和美感。 |
4 | OpenCV | OpenCV 是一个跨平台库,我们可以使用它来开发实时计算机视觉应用程序。它主要关注图像处理、视频捕获和分析,包括人脸检测和物体检测等功能。 |
要在“Contents”列上执行全文搜索,请向需要在其中搜索的表的列添加全文索引:
ALTER TABLE Tutorials_table ADD FULLTEXT(Contents);
获得的输出如下:
Query OK, 0 rows affected, 1 warning (0.32 sec) Records: 0 Duplicates: 0 Warnings: 1
现在,您可以使用 MATCH 运算符搜索特定字符串(例如“Java”)在“Contents”列中,并在找到匹配项时检索完整的记录:
SELECT * FROM Tutorials_table WHERE MATCH (Contents) AGAINST ('Java');
产生的结果如下所示:
ID | 标题 | 内容 |
---|---|---|
1 | Java | Java 是一种高级编程语言,最初由 Sun Microsystems 开发,并于 1995 年发布。Java 运行在各种平台上,例如 Windows、Mac OS 和各种版本的 UNIX。 |
2 | JavaFX | JavaFX 是一个用于构建富互联网应用程序的 Java 库。使用此库编写的应用程序可以在多个平台上一致运行。使用 JavaFX 开发的应用程序可以在各种设备上运行,例如台式电脑、手机、电视、平板电脑等。 |
使用通配符的 MATCH 运算符
MySQL MATCH 运算符也可以与通配符(例如 % 和 _)一起使用,以搜索全文搜索中的特定模式。
示例
假设先前创建的表“Tutorials_table”,让我们搜索以“JavaFX”开头的字符串,使用以下查询:
SELECT * FROM Tutorials_table WHERE MATCH (Contents) AGAINST ('%JavaFX');
上述代码的输出如下:
ID | 标题 | 内容 |
---|---|---|
2 | JavaFX | JavaFX 是一个用于构建富互联网应用程序的 Java 库。使用此库编写的应用程序可以在多个平台上一致运行。使用 JavaFX 开发的应用程序可以在各种设备上运行,例如台式电脑、手机、电视、平板电脑等。 |
使用 REGEXP 的 MATCH 运算符
您还可以将 MATCH 运算符与正则表达式 (REGEXP) 一起使用。在这里,我们正在搜索 Tutorials_table 中的字符串,该字符串在 Contents 列中包含“HTML”或“JavaFX”:
SELECT * FROM Tutorials_table WHERE MATCH (Contents) AGAINST ('HTML|JavaFX');
执行上述代码后,我们将得到以下输出:
ID | 标题 | 内容 |
---|---|---|
2 | JavaFX | JavaFX 是一个用于构建富互联网应用程序的 Java 库。使用此库编写的应用程序可以在多个平台上一致运行。使用 JavaFX 开发的应用程序可以在各种设备上运行,例如台式电脑、手机、电视、平板电脑等。 |