RLIKE 简介
我们在 MySQL 中进行字符串匹配时,经常会用到 RLIKE 运算符。它的主要作用是根据特定的模式来执行字符串表达式的匹配。简单来说,它就是我们用来进行正则表达式搜索的强大工具。
语法
RLIKE pattern
参数说明
在使用这个方法时,我们需要关注一个核心参数,也就是语法中提到的 pattern。
- pattern(模式):这是我们希望表达式能够匹配上的特定模式。关于各种模式的写法及其具体用法,我们会在下文中详细探讨。
常用模式匹配表
为了让大家更直观地理解,我们整理了一个常用的模式对照表:
模式匹配说明
—
匹配前面字符串出现 0 次或多次的情况
匹配前面字符串出现 1 次或多次的情况
匹配任意单个字符
匹配前面字符串出现 0 次或 1 次
匹配字符串的开始位置
匹配字符串的结束位置
匹配方括号内列出的任意一个字符
匹配方括号内未列出的任意一个字符
匹配任意一个大写字母
匹配任意一个小写字母
匹配 0 到 9 之间的任意数字
匹配单词的开始位置
匹配单词的结束位置
匹配字符类,例如 [:alpha:] 匹配字母,[:space:] 匹配空白字符,[:punct:] 匹配标点符号,[:upper:] 匹配大写字母
p2\
选择(Alternation);匹配 p1、p2 或 p3 中的任意一个模式
匹配前面的元素恰好 n 次
匹配前面的元素至少 m 次,至多 n 次## 实例演示
示例 1
在这个例子中,我们将尝试查找所有姓氏(Last name)以字母 "S" 开头的员工。让我们先构建一个员工表。
CREATE TABLE Employee
(
Employee_id INT AUTO_INCREMENT,
First_name VARCHAR(100) NOT NULL,
Last_name VARCHAR(100) NOT NULL,
Joining_Date DATE NOT NULL,
PRIMARY KEY(Employee_id )
);
#### 向 Employee 表中插入数据
INSERT INTO Employee
(First_name ,Last_name , Joining_Date )
VALUES
(‘Sayantan‘, ‘Majumdar‘, ‘2000-01-11‘),
(‘Anushka‘, ‘Samanta‘, ‘2002-11-10‘ ),
(‘Sayan‘, ‘Sharma‘, ‘2005-06-11‘ ),
(‘Shayari‘, ‘Das‘, ‘2008-01-21‘ ),
(‘Sayani‘, ‘Jain‘, ‘2008-02-01‘ ),
(‘Tapan‘, ‘Samanta‘, ‘2010-01-11‘ ),
(‘Deepak‘, ‘Sharma‘, ‘2014-12-01‘ ),
(‘Ankana‘, ‘Jana‘, ‘2018-08-17‘),
(‘Shreya‘, ‘Ghosh‘, ‘2020-09-10‘) ;
现在,我们的 Employee 表内容如下。
select * from Employee ;
输出结果:
Firstname
JoiningDate
—
—
Sayantan
2000-01-11
Anushka
2002-11-10
Sayan
2005-06-11
Shayari
2008-01-21
Sayani
2008-02-01
Tapan
2010-01-11
Deepak
2014-12-01
Ankana
2018-08-17
Shreya
2020-09-10接下来,我们要筛选出那些姓氏以 ‘S‘ 开头的员工。
SELECT * FROM Employee
WHERE Last_name RLIKE ‘^S‘ ;
输出结果:
Firstname
JoiningDate
—
—
Anushka
2002-11-10
Sayan
2005-06-11
Tapan
2010-01-11
Deepak
2014-12-01### 示例 2
在第二个例子中,我们将查找所有名字以字母 ‘i‘ 结尾的员工。
SELECT * FROM Employee
WHERE First_name RLIKE ‘i$‘ ;
输出结果:
Firstname
JoiningDate
—
—
Shayari
2008-01-21
Sayani
2008-02-01