MySQL正则表达式、运算符以及多表查询

本文详细介绍了MySQL中的正则表达式,包括REGEXP操作符及其匹配模式,以及各种运算符,如算术、比较、逻辑和位运算符。此外,还深入探讨了MySQL的连接查询,包括内连接、左连接和右连接,帮助读者理解多表查询的基本概念和用法。
摘要由CSDN通过智能技术生成


引言

正则表达式是用来匹配文本的特殊的串(字符集合)。如果你想从一个文本文件中提取电话号码,可以使用正则表达式。如果你需要查找名字中间有数字的所有文件,可以使用一个正则表达式。如果你想在一个文本块中找到所有重复的单词,可以使用一个正则表达式。所有种类的程序设计语言、文本编辑器、操作系统等都支持正则表达式。


一、正则表达式

MySQL 的正则表达式使用 REGEXP 这个关键字来指定正则表达式的匹配模式,REGEXP 操作符所支持的匹配模式如下所示

匹配 描述 示例
^ 匹配文本的开始字符 ‘^bd’ 匹配以 bd 开头的字符串
$ 匹配文本的结束字符 ‘qn$’ 匹配以 qn 结尾的字符串
. 匹配任何单个字符 ‘s.t’ 匹配任何 s 和 t 之间有一个字符的字符串
* 匹配零个或多个在它前面的字符 ‘fo*t’ 匹配 t 前面有任意个 o
% 匹配所有 \
+ 匹配前面的字符 1 次或多次 ‘hom+’ 匹配以 ho 开头,后面至少一个m 的字符串
字符串 匹配包含指定的字符串 ‘clo’ 匹配含有 clo 的字符串
p1Ip2 匹配 p1 或 p2 \
[…] 匹配字符集合中的任意一个字符 ‘[abc]’ 匹配 a 或者 b 或者 c
[^…] 匹配不在括号中的任何字符 ‘[^ab]’ 匹配不包含 a 或者 b 的字符串
{n} 匹配前面的字符串 n 次 ‘g{2}’ 匹配含有 2 个 g 的字符串
{n,m} 匹配前面的字符串至少 n 次,至多m 次 ‘f{1,3}’ 匹配 f 最少 1 次,最多 3 次
  • 案例
#查询以li开头的学生信息
mysql> select id,name from info where name regexp '^li';
+----+-------+
| id | name  |
+----+-------+
|  2 | lier  |
|  3 | lisan |
|  7 | lilei |
+----+-------+
3 rows in set (0.01 sec)
-----------------------------------------------------------------------------------------------
#查询以n结尾的学生信息
mysql> select id,name from info where name regexp 'n$';
+----+--------+
| id | name   |
+----+--------+
|  3 | lisan  |
|  5 | goudan |
| 10 | shidan |
+----+--------+
3 rows in set (0.00 sec)
-----------------------------------------------------------------------------------------------
#查询名字中包含an的学生信息
mysql> select id,name from info where name regexp 'n$';
+----+--------+
| id | name   |
+----+--------+
|  3 | lisan  |
|  5 | goudan |
| 10 | shidan |
+----+--------+
3 rows in set (0.00 sec)
----------------------------------------------------------------------------------------------
#查询名字是wang开头,a结尾,中间不知道是一个什么字符的学生信息
mysql> select id,name from info where name regexp 'wang.a';
+----+--------+
| id | name   |
+----+--------+
|  4 | wangya |
+----+--------+
1 row in set (0.00 sec)
---------------------------------------------------------------------------------------------
#查询名字中包含sh或者li的学生信息
mysql> select id,name from info where name regexp 'sh|li';
+----+--------+
| id | name   |
+----+--------+
|  2 | lier   |
|  3 | lisan  |
|  7 | lilei  |
|  9 | shabi  |
| 10 | shidan |
+----+--------+
5 rows in set (0.00 sec)
----------------------------------------------------------------------------------------------
#查询名字中有sh,a可有可无的学生信息,必须要有的部分是'sh''a'可有可无
mysql> select id,name from info where name regexp 'sha*';
+----+--------+
| id | name   |
+----+--------+
|  9 | shabi  |
| 10 | shidan |
+----+--------+
2 rows in set (0.00 sec)
----------------------------------------------------------------------------------------------
#查询名字中含有go,u至少出现一次的信息
mysql> select id,name from info where name regexp 'gou+';
+----+--------+
| id | name   |
+----+--------+
|  5 | goudan |
| 11 | goush  |
+----+--------+
2 rows in set (0.00 sec)
------------------------------------------------------------------------------------------------
#查询名字以s-x开头的学生信息
mysql> select id,name from info where name regexp '^[s-x]';
+----+--------+
| id | name   |
+----+--------+
|  4 | wangya |
|  9 | shabi  |
| 10 | shidan |
+----+--------+
3 rows in set (0.00 sec)
--------------------------------------------------------------------------
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL正则表达式是一种用于匹配字符串的规则。在MySQL中,可以使用REGEXP关键字来指定正则表达式的匹配模式。正则表达式可以用来检索、替换符合某个规则的文本。\[1\]\[2\] 例如,可以使用正则表达式来查询以"li"开头的学生信息:SELECT id, name FROM students WHERE name REGEXP '^li';\[1\] 在MySQL正则表达式中,星号"*"可以匹配任意多个字符。例如,在字符串"Computer"、"Economy"和"Music"中,字母"C"后面没有出现字母"h",但仍然满足匹配条件。\[3\] #### 引用[.reference_title] - *1* [(六)MySQL数据库高阶语句之正则表达式运算符、连接表达式JOIN](https://blog.csdn.net/weixin_56667320/article/details/118774514)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [MySQL数据库基本操作-正则表达式](https://blog.csdn.net/qq_53060585/article/details/122560478)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [MySQL正则表达式(REGEXP)](https://blog.csdn.net/weixin_43901865/article/details/119948773)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值