0

0

mysql查询操作及正则表达式小结_MySQL

php中文网

php中文网

发布时间:2016-06-01 13:28:47

|

1235人浏览过

|

来源于php中文网

原创

正则表达式

bitsCN.com

mysql查询操作及正则表达式小结
 

Murf AI
Murf AI

AI文本转语音生成工具

下载

怎么说呢,用markdown编辑好的文本,无法用在博客园中,不知道怎么处理。

一、排序

1、按多个列排序
使用逗号隔开,如果指定方向则紧挨着要排序的列名
对于多个列的排序,先按照前一个排序然后在前一个的基础上按照后面的排序。
如:

 

SELECT * FROM a2 ORDER BY a_id DESC,t_id desc

 

数据结果如下:

mysql查询操作及正则表达式小结_MySQL

2、order by与limit

 

SELECT * FROM a2 ORDER BY a_id DESC,t_id desc LIMIT 1

 

注意:
order by 的位置,from之后,limit之前。

二、数据过滤操作符(and/or/in/not)

注意:优先级
当含有and和or时,and的优先级高于or,所以先执行and,解决的办法就是使用()括号的优先级高于and,能够消除歧义。
如:

 

SELECT * FROM a2 WHERE (a_id = 2 or t_id>4) AND id>3

 

in操作符的特点
in操作符完成了与or相同的功能,如:

 

SELECT * FROM a2 WHERE t_id in(1,2,3)
SELECT * FROM a2 WHERE t_id =1 OR t_id=2 OR t_id=3

 

上面两个功能相同。
既然如此,那么为什么还用in呢,下面就说说in的优点:

in的优点:
1.在使用长的合法选项清单时,IN操作符的更清楚直观
2.计算次序容易管理
3.比OR执行快
4.IN最大的优点可以包含其他select语句,能够动态的建立Where子句。

 

SELECT * FROM a2 WHERE t_id in(
    SELECT t_id FROM a2 WHERE id=5
);

 

NOT 取反
NOT对IN、BETWEEN、exists子句取反。

三、数据过滤通配符

%通配符

%:表示任何字符出现任意次数

 

LIKE  '惠普%' :以'惠普'开头
LIKE  '%惠普' :以'惠普'结尾
LIKE '%惠普%':包含'惠普'
LIKE 's%e':以s开头,e结尾

 

注意:

1.除了一个或多个字符外,%还能匹配0个字符。
2.尾空格可能会干扰通配符匹配,如:保存great时,如果它后面有一个或多个空格,则%great将不会匹配它们,因为后面有多余的字符(空格),解决办法就是使用双%,%great%,一个更好的办法是使用函数去掉首尾空格。
3.%不能匹配NULL.

_通配符
下划线通配符与%相同,但是它只匹配单个字符而非多个。

 

SELECT * FROM a WHERE name LIKE '_ood'  #good
SELECT * FROM a WHERE name LIKE 'goo_'  #good
SELECT * FROM a WHERE name LIKE 'go_d'  #good

 

优化:
通配符在搜索处理上比其他的要慢些,所以要记住以下技巧:

1.不要过度使用通配符
2.不要把它们用在搜索模式的开始处,如若不然,搜索起来会很慢的。
3.仔细注意通配符的位置,切勿放错。

四、使用正则表达式

本小节学习如何在Where子句中使用正则表达式来更好的控制数据过滤。
1.基本字符的匹配

 

SELECT * FROM a1 WHERE name regexp '1000'  #匹配名称含有1000的所有行
SELECT * FROM a1 WHERE name regexp '.000'  #匹配以000结尾的所有行,(.正则中表示:匹配任意一个字符)

 

从中可以看到正则表达式能够模拟LIKE使用通配符,注意:在通配符能完成的时候就不用正则,因为正则可能慢点,当然正则也能简化通配符,完成更大的作用。所以要有所取舍。

LIKE与REGEXP的区别:

 

 SELECT * FROM a1 WHERE name LIKE 'a'
SELECT * FROM a1 WHERE name regexp 'a' 

 

下面两条语句第一条不返回数据,第二条返回数据。
原因如下:

LIKE匹配整个列值时,不会找到它,相应的行也不会被返回(除非使用通配符)
REGEXP匹配时,会自动查找并返回结果。
那么REGEXP也能匹配整个列值,使用^和$定位符即可!

匹配不区分大小写

Mysql正则大小写都会匹配,为区分大小写可使用binary关键字,如:

 

SELECT * FROM a1 WHERE name LIKE binary '%J%'   #使用LIKE+通配符匹配大写J
SELECT * FROM a1 WHERE name regexp binary 'j'   #使用正则匹配小写j

 

2.进行OR匹配

|为正则表达式的OR操作符,表示匹配其中之一

 

SELECT * FROM a1 WHERE name regexp binary 'a|j|G' 

 

3.匹配特定字符

使用[]括起来的字符,将会匹配其中任意单个字符。

 

SELECT * FROM a1 WHERE name regexp '[12]st'

 

以上'[12]st'正则表达式,[12]定义一组字符,它的意思是匹配1或2,因此结果如下:

mysql查询操作及正则表达式小结_MySQL

正如所见,[]是另一种OR语句,[123]st可以是[1|2|3]st的缩写,也可以使用后者,注意:1|2|3 st这样不推荐,因为mysql会假定你的意思是匹配'1'或'2'或'3st'除非你把字符|括在一个集合中,如:[1|2|3]st
字符也可以否定,加^则意味着除此之外,如[^123]st意思是匹配除了1st、2st、3st之外的数据。

4.匹配范围

正则表达式可以使用-匹配一个范围,如[0-9]匹配任意数字,无论是1还是11还是10111,[a-z]匹配任意小写字母。

5.匹配特殊字符
如上,./-/[]等是正则表达式的特殊字符,如果要匹配含有这些字符的数据,就需要使用转义(escaping),//。如//.表示查找'.'。//也用来引用元字符(具有特殊含义的字符),如:
//f:表示换页
//n:表示换行
//r:表示回车
//t:表示制表
//v:表示纵向制表
Notes:

如果匹配反斜杠本身()则需要使用///
为什么Mysql使用两个反斜杠(/),而很多语言使用一个反斜杠转义呢,因为mysql自己解释一个,正则表达式库解释一个。

6.匹配字符串

mysql查询操作及正则表达式小结_MySQL

 

 

bitsCN.com

相关专题

更多
ip地址修改教程大全
ip地址修改教程大全

本专题整合了ip地址修改教程大全,阅读下面的文章自行寻找合适的解决教程。

86

2025.12.26

压缩文件加密教程汇总
压缩文件加密教程汇总

本专题整合了压缩文件加密教程,阅读专题下面的文章了解更多详细教程。

50

2025.12.26

wifi无ip分配
wifi无ip分配

本专题整合了wifi无ip分配相关教程,阅读专题下面的文章了解更多详细教程。

100

2025.12.26

漫蛙漫画入口网址
漫蛙漫画入口网址

本专题整合了漫蛙入口网址大全,阅读下面的文章领取更多入口。

293

2025.12.26

b站看视频入口合集
b站看视频入口合集

本专题整合了b站哔哩哔哩相关入口合集,阅读下面的文章查看更多入口。

589

2025.12.26

俄罗斯搜索引擎yandex入口汇总
俄罗斯搜索引擎yandex入口汇总

本专题整合了俄罗斯搜索引擎yandex相关入口合集,阅读下面的文章查看更多入口。

725

2025.12.26

虚拟号码教程汇总
虚拟号码教程汇总

本专题整合了虚拟号码接收验证码相关教程,阅读下面的文章了解更多详细操作。

63

2025.12.25

错误代码dns_probe_possible
错误代码dns_probe_possible

本专题整合了电脑无法打开网页显示错误代码dns_probe_possible解决方法,阅读专题下面的文章了解更多处理方案。

30

2025.12.25

网页undefined啥意思
网页undefined啥意思

本专题整合了undefined相关内容,阅读下面的文章了解更多详细内容。后续继续更新。

94

2025.12.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 4.1万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.7万人学习

AngularJS教程
AngularJS教程

共24课时 | 2.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号