仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 579|回复: 7
打印 上一主题 下一主题

[学习教程] MYSQL教程之MYSQL形式婚配:REGEXP和like用法

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:13:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
对于现有业务,可以轻松移植到MySQL。当你需要替换掉老的硬件,当你需要削减历史遗留下的老系统的时候,选用MySQL对于财务部门来说更具吸引力。</p>like请求全部数据都要婚配,而REGEXP只必要部分婚配便可。
也就是说,用Like,必需这个字段的一切内容满意前提,而REGEXP只必要有任何一个片断满意便可。
MySQL供应尺度的SQL形式婚配(like),和一种基于象Unix有用程序如vi、grep和sed的扩大正则表达式形式婚配的格局(regexp)。
SQL的形式婚配同意你利用“_”婚配任何单个字符,而“%”婚配恣意数量字符(包含零个字符)。在MySQL中,SQL的形式缺省是疏忽巨细写的。上面显现一些例子。注重在你利用SQL形式时,你不克不及利用=或!=;而利用LIKE或NOTLIKE对照操纵符。
为了找出以“b”开首的名字:
mysql>SELECT*FROMpetWHEREnameLIKE"b%";
+--------+--------+---------+------+------------+------------+
nameownerspeciessexbirthdeath
+--------+--------+---------+------+------------+------------+
BuffyHarolddogf1989-05-13NULL
BowserDianedogm1989-08-311995-07-29
+--------+--------+---------+------+------------+------------+
为了找出以“fy”开头的名字:
mysql>SELECT*FROMpetWHEREnameLIKE"%fy";
+--------+--------+---------+------+------------+-------+
nameownerspeciessexbirthdeath
+--------+--------+---------+------+------------+-------+
FluffyHaroldcatf1993-02-04NULL
BuffyHarolddogf1989-05-13NULL
+--------+--------+---------+------+------------+-------+
为了找出包括一个“w”的名字:
mysql>SELECT*FROMpetWHEREnameLIKE"%w%";
+----------+-------+---------+------+------------+------------+
nameownerspeciessexbirthdeath
+----------+-------+---------+------+------------+------------+
ClawsGwencatm1994-03-17NULL
BowserDianedogm1989-08-311995-07-29
WhistlerGwenbirdNULL1997-12-09NULL
+----------+-------+---------+------+------------+------------+
为了找出包括恰好5个字符的名字,利用“_”形式字符:
mysql>SELECT*FROMpetWHEREnameLIKE"_____";
+-------+--------+---------+------+------------+-------+
nameownerspeciessexbirthdeath
+-------+--------+---------+------+------------+-------+
ClawsGwencatm1994-03-17NULL
BuffyHarolddogf1989-05-13NULL
+-------+--------+---------+------+------------+-------+

别的一种婚配是基于正则表达式的。当你对这类形式举行婚配测试时,利用REGEXP和NOTREGEXP操纵符(或RLIKE和NOTRLIKE,它们是同义词)。
“.”婚配任何单个的字符。
一个字符类“[...]”婚配在方括号内的任何字符。比方,“[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*FROMpetWHEREnameREGEXP"^[bB]";
+--------+--------+---------+------+------------+------------+
nameownerspeciessexbirthdeath
+--------+--------+---------+------+------------+------------+
BuffyHarolddogf1989-05-13NULL
BowserDianedogm1989-08-311995-07-29
+--------+--------+---------+------+------------+------------+
为了找出以“fy”开头的名字,利用“$”婚配名字的开头:
mysql>SELECT*FROMpetWHEREnameREGEXP"fy$";
+--------+--------+---------+------+------------+-------+
nameownerspeciessexbirthdeath
+--------+--------+---------+------+------------+-------+
FluffyHaroldcatf1993-02-04NULL
BuffyHarolddogf1989-05-13NULL
+--------+--------+---------+------+------------+-------+
为了找出包括一个“w”的名字,利用“[wW]”婚配小写或年夜写的“w”:
mysql>SELECT*FROMpetWHEREnameREGEXP"[wW]";
+----------+-------+---------+------+------------+------------+
nameownerspeciessexbirthdeath
+----------+-------+---------+------+------------+------------+
ClawsGwencatm1994-03-17NULL
BowserDianedogm1989-08-311995-07-29
WhistlerGwenbirdNULL1997-12-09NULL
+----------+-------+---------+------+------------+------------+

这一切听起来不错,无疑DBaaS具有很多相对于RDBMS的优势。然而MySQL学习教程,DBaaS也有其局限性,云服务中固有的局限性就是之一。当客户开始将数据放入云端时,他们会遭遇到无法控制的网络性能问题。
第二个灵魂 该用户已被删除
沙发
发表于 2015-1-18 23:24:09 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
小魔女 该用户已被删除
板凳
发表于 2015-1-24 23:45:48 | 只看该作者
这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
愤怒的大鸟 该用户已被删除
地板
发表于 2015-2-2 16:26:39 | 只看该作者
代替了原来VB式的错误判断。比Oracle高级不少。
再现理想 该用户已被删除
5#
发表于 2015-2-8 01:40:48 | 只看该作者
无法深入到数据库系统层面去了解和探究
不帅 该用户已被删除
6#
发表于 2015-2-23 23:11:35 | 只看该作者
换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
灵魂腐蚀 该用户已被删除
7#
发表于 2015-3-7 10:25:41 | 只看该作者
其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!
金色的骷髅 该用户已被删除
8#
发表于 2015-3-21 16:32:08 | 只看该作者
你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 15:40

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表