当前位置:首页 > 系统运维 > 正文内容

MySQL条件查询的实例演示

a8116255316年前 (2010-05-18)系统运维7

以下的文章主要讲述的是MySQL条件查询(模式匹配),我们大家都知道 MySQL数据库所提供的标准SQL 模式匹配,及一种基于象Unix 实用程序如 vi、grep与sed 的扩展正则表达式模式匹配的格式。

SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL中,SQL的模式缺省是忽略大小写的。下面显示一些例子。注意在你使用SQL模式时,你不能使用=或!=;而使用LIKE或NOT LIKE比较操作符。

为了找出以“b”开头的名字:

mysql> SELECT * FROM pet WHERE name LIKE "b%";  +--------+--------+---------+------+------------+------------+  | name | owner | species | sex | birth | death |  +--------+--------+---------+------+------------+------------+  | Buffy | Harold | dog | f | 1989-05-13 | NULL |  | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |  +--------+--------+---------+------+------------+------------+ 

为了找出以“fy”结尾的名字:

mysql> SELECT * FROM pet WHERE name LIKE "%fy";  +--------+--------+---------+------+------------+-------+  | name | owner | species | sex | birth | death |  +--------+--------+---------+------+------------+-------+  | Fluffy | Harold | cat | f | 1993-02-04 | NULL |  | Buffy | Harold | dog | f | 1989-05-13 | NULL |  +--------+--------+---------+------+------------+-------+ 

MySQL条件查询中为了找出包含一个“w”的名字:

mysql> SELECT * FROM pet WHERE name LIKE "%w%";  +----------+-------+---------+------+------------+------------+  | name | owner | species | sex | birth | death |  +----------+-------+---------+------+------------+------------+  | Claws | Gwen | cat | m | 1994-03-17 | NULL |  | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |  | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |  +----------+-------+---------+------+------------+------------+ 

为了找出包含正好5个字符的名字,使用“_”模式字符:

mysql> SELECT * FROM pet WHERE name LIKE "_____";  +-------+--------+---------+------+------------+-------+  | name | owner | species | sex | birth | death |  +-------+--------+---------+------+------------+-------+  | Claws | Gwen | cat | m | 1994-03-17 | NULL |  | Buffy | Harold | dog | f | 1989-05-13 | NULL |  +-------+--------+---------+------+------------+-------+ 

由MySQL提供的模式匹配的其他类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。

扩展正则表达式的一些字符是:

“.” 匹配任何单个的字符。

一个字符类“[...]”匹配在方括号内的任何字符。例如,“[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 * FROM pet WHERE name REGEXP "^[bB]";  +--------+--------+---------+------+------------+------------+  | name | owner | species | sex | birth | death |  +--------+--------+---------+------+------------+------------+  | Buffy | Harold | dog | f | 1989-05-13 | NULL |  | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |  +--------+--------+---------+------+------------+------------+ 

为了找出以“fy”结尾的名字,使用“$”匹配名字的结尾:

mysql> SELECT * FROM pet WHERE name REGEXP "fy$";  +--------+--------+---------+------+------------+-------+  | name | owner | species | sex | birth | death |  +--------+--------+---------+------+------------+-------+  | Fluffy | Harold | cat | f | 1993-02-04 | NULL |  | Buffy | Harold | dog | f | 1989-05-13 | NULL |  +--------+--------+---------+------+------------+-------+ 

为了找出包含一个“w”的名字,使用“[wW]”匹配小写或大写的“w”:

mysql> SELECT * FROM pet WHERE name REGEXP "[wW]";  +----------+-------+---------+------+------------+------------+  | name | owner | species | sex | birth | death |  +----------+-------+---------+------+------------+------------+  | Claws | Gwen | cat | m | 1994-03-17 | NULL |  | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |  | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |  +----------+-------+---------+------+------------+------------+ 

既然如果一个正规表达式出现在值的任何地方,其模式匹配了,就不必再先前的MySQL条件查询中在模式的两方面放置一个通配符以使得它匹配整个值,就像如果你使用了一个SQL模式那样。

为了找出包含正好5个字符的名字,使用“^”和“$”匹配名字的开始和结尾,和5个“.”实例在两者之间:

mysql> SELECT * FROM pet WHERE name REGEXP "^.....$";  +-------+--------+---------+------+------------+-------+  | name | owner | species | sex | birth | death |  +-------+--------+---------+------+------------+-------+  | Claws | Gwen | cat | m | 1994-03-17 | NULL |  | Buffy | Harold | dog | f | 1989-05-13 | NULL |  +-------+--------+---------+------+------------+-------+ 

你也可以使用“{n}”“重复n次”操作符重写先前的查询:

mysql> SELECT * FROM pet WHERE name REGEXP "^.{5}$";  +-------+--------+---------+------+------------+-------+  | name | owner | species | sex | birth | death |  +-------+--------+---------+------+------------+-------+  | Claws | Gwen | cat | m | 1994-03-17 | NULL |  | Buffy | Harold | dog | f | 1989-05-13 | NULL |  +-------+--------+---------+------+------------+-------+ 

上面说了这么多内容,是关于对MySQL条件查询的介绍,不知道各位对MySQL的认识是不是更上一层楼了,时时关注IT *** ,学习最新Mysql技术。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://2345hao.cn/blog/index.php/post/20372.html

分享给朋友:

“MySQL条件查询的实例演示” 的相关文章

windows 7鼠标停顿怎么办?windows 7 usb鼠标停顿的原因以及解决

windows 7鼠标停顿怎么办?windows 7 usb鼠标停顿的原因以及解决

很多使用Windows 7系统的朋友都想小编反应,假如暂停使用电脑,鼠标会出现停顿现象,这是怎么回事呢 该怎么解决呢 下面就和小编一起去看下Windows 7 usb鼠标停顿的解决方法吧。 由于Windows 7系统中有一项USB选择性暂停造成的。这项设置主要为了节电,当他检测到用户没有对系统进行...

windows 7系统的电脑发出嘟嘟嘟的声音该怎么解决?

windows 7系统的电脑发出嘟嘟嘟的声音该怎么解决?

在某些电脑中,机器内部蜂鸣器与系统的声音输出方案是相关联的,这样一来会导致当系统输出声音时,即使电脑没有连接外部音响或耳机,也会通过内置蜂鸣器发出“嘟嘟哔哔”的声音。这个问题主要出现在Windows 7电脑中,假如你的电脑恰好遇到了这样的问题,可参考下面的方法来解决: 1、在桌面“计算机”图标上右...

微软今天正式停止对windows 7的主流支持

微软今天正式停止对windows 7的主流支持

北京时间1月13日消息,根据计划,微软将于2015年1月13日正式结束对Windows 7SP1的“主流支持”,而这也标志着“扩展支持”阶段的开始,这个阶段将于2020年1月14日结束。 2013年10月份,微软终止销售独立的Windows 7系统安装包,并要求制造商于2014年10月份停止生...

Skylake平台不能通过USB接口装windows 7系统

Skylake平台不能通过USB接口装windows 7系统

Intel会在2015年推出Broadwell、Skylake两代14nm处理器,前者可以使用9系芯片组,Skylake升级到了LGA1151插槽,需要搭配新的100系列芯片组,但初期的Skylake-S又不能超倍频,所以今年Q2季度开始会很混杂。Skylake一代会支持DDR4,100系列芯片组升...

ubuntu14.04打开个几个应用窗口最小化后怎么切换呢?

ubuntu14.04打开个几个应用窗口最小化后怎么切换呢?

ubuntu14.04应用窗口列表在哪里?在ubuntu下打开个几个应用窗口最小化后怎么切换呢,应用窗口列表在哪里呢? 1、多打开几个chrome浏览器窗口。 2、然后都做最小化处理。 3、现在我们在桌面左边的面板上找到"左右两边有小白点"的chrome浏览器应用图标,这就是chr...

windows 7系统怎么取消禁ping命令?

windows 7系统怎么取消禁ping命令?

当我在虚拟机的linux系统中ping本机的ip发现ping不通,而本机可以ping通虚拟机中的ip。应该是出于安全考虑吧,Windows 7默认在防火墙里禁止了。 1、查看主机ip 打开“开始”程序中的“附件”,找到“命令提示符”打开。输入命令:ipconfig,可以看到本机的ip是192.1...