熟悉了最简单的算术运算符,再来看一下比较运算符。当使用SELECT 语句进行查询时,MySQL允许用户对表达式的左边操作数和右边操作数进行比较,比较结果为真,则返回1,为假则返回0,比较结果不确定则返回NULL。表4-2 列出了MySQL 5.0 支持的各种比较运算符。

  比较运算符可以用于比较数字、字符串和表达式。数字作为浮点数比较,而字符串以不区分大小写的方式进行比较。下面通过实例来学习各种比较运算符的使用。
  “=”运算符,用于比较运算符两侧的操作数是否相等,如果两侧操作数相等返回值为1,否则为0。注意NULL 不能用于“=”比较。

  1. mysql> select 1=0,1=1,NULL=NULL;
  2. +-----+-----+-----------+
  3. | 1=0 | 1=1 | NULL=NULL |
  4. +-----+-----+-----------+
  5. | 0 | 1 | NULL |
  6. +-----+-----+-----------+
  7. 1 row in set (0.00 sec)

 “<>”运算符,和“=”相反,如果两侧操作数不等,则值为1,否则为0。NULL 不能用于“<>”比较。

  1. mysql> select 1<>0,1<>1,null<>null;
  2. +------+------+------------+
  3. | 1<>0 | 1<>1 | null<>null |
  4. +------+------+------------+
  5. | 1 | 0 | NULL |
  6. +------+------+------------+
  7. 1 row in set (0.00 sec)

 “<=>”安全的等于运算符,和“=”类似,在操作数相等时值为1,不同之处在于即使操作的值为NULL 也可以正确比较。

  1. mysql> select 1<=>1,2<=>0 ,0<=>0, NULL<=>NULL;
  2. +-------+-------+-------+-------------+
  3. | 1<=>1 | 2<=>0 | 0<=>0 | NULL<=>NULL |
  4. +-------+-------+-------+-------------+
  5. | 1 | 0 | 1 | 1 |
  6. +-------+-------+-------+-------------+
  7. 1 row in set (0.17 sec)

 “<”运算符,当左侧操作数小于右侧操作数时,其返回值为1,否则其值为0。

  1. mysql> select 'a'<'b' ,'a'<'a' ,'a'<'c',1<2;
  2. +---------+---------+---------+-----+
  3. | 'a'<'b' | 'a'<'a' | 'a'<'c' | 1<2 |
  4. +---------+---------+---------+-----+
  5. | 1 | 0 | 1 | 1 |
  6. +---------+---------+---------+-----+
  7. 1 row in set (0.03 sec)

 “<=”运算符,当左侧操作数小于等于右侧操作数时,其返回值为1,否则返回值为0。

  1. mysql> select 'bdf'<='b','b'<='b' ,0<1;
  2. +------------+----------+-----+
  3. | 'bdf'<='b' | 'b'<='b' | 0<1 |
  4. +------------+----------+-----+
  5. | 0 | 1 | 1 |
  6. +------------+----------+-----+
  7. 1 row in set (0.00 sec)

 “>”运算符,当左侧操作数大于右侧操作数时,其返回值为1,否则返回值为0。

  1. mysql> select 'a'>'b','abc'>'a' ,1>0;
  2. +---------+-----------+-----+
  3. | 'a'>'b' | 'abc'>'a' | 1>0 |
  4. +---------+-----------+-----+
  5. | 0 | 1 | 1 |
  6. +---------+-----------+-----+
  7. 1 row in set (0.03 sec)

 “>=”运算符,当左侧操作数大于等于右侧操作数时,其返回值为1,否则返回值为0。

  1. mysql> select 'a'>='b','abc'>='a' ,1>=0 ,1>=1;
  2. +----------+------------+------+------+
  3. | 'a'>='b' | 'abc'>='a' | 1>=0 | 1>=1 |
  4. +----------+------------+------+------+
  5. | 0 | 1 | 1 | 1 |
  6. +----------+------------+------+------+
  7. 1 row in set (0.00 sec)

 “BETWEEN”运算符的使用格式为“a BETWEEN min AND max”,当a 大于等于min 并且小于等于max,则返回值为1,否则返回0;当操作数a、min、max 类型相同时,此表达式等价于(a>=min and a<=max),当操作数类型不同时,比较时会遵循类型转换原则进行转换后,再进行比较运算。下例中描述了BETWEEN 的用法:

  1. mysql> select 10 between 10 and 20, 9 between 10 and 20;
  2. +----------------------+---------------------+
  3. | 10 between 10 and 20 | 9 between 10 and 20 |
  4. +----------------------+---------------------+
  5. | 1 | 0 |
  6. +----------------------+---------------------+
  7. 1 row in set (0.00 sec)

 “IN”运算符的使用格式为“a IN (value1,value2,…)”,当a 的值存在于列表中时,则整个比较表达式返回的值为1,否则返回0。

  1. mysql> select 1 in (1,2,3) , 't' in ('t','a','b','l','e'),0 in (1,2);
  2. +--------------+------------------------------+------------+
  3. | 1 in (1,2,3) | 't' in ('t','a','b','l','e') | 0 in (1,2) |
  4. +--------------+------------------------------+------------+
  5. | 1 | 1 | 0 |
  6. +--------------+------------------------------+------------+
  7. 1 row in set (0.00 sec)

 “IS NULL”运算符的使用格式为“a IS NULL”,当a 的值为NULL,则返回值为1,否则返回0。

  1. mysql> select 0 is null, null is null;
  2. +-----------+--------------+
  3. | 0 is null | null is null |
  4. +-----------+--------------+
  5. | 0 | 1 |
  6. +-----------+--------------+
  7. 1 row in set (0.02 sec)

 “IS NOT NULL”运算符的使用格式为“a IS NOT NULL”。和“IS NULL”相反,当a 的值不为NULL,则返回值为1,否则返回0。

  1. mysql> select 0 is not null, null is not null;
  2. +----------------+-------------------+
  3. | 0 is not null | null is not null |
  4. +----------------+-------------------+
  5. | 1 | 0 |
  6. +----------------+-------------------+
  7. 1 row in set (0.00 sec)

 “LIKE”运算符的使用格式为“a LIKE %123%”,当a 中含有字符串“123”时,则返回值为1,否则返回0。

  1. mysql> select 123456 like '123%',123456 like '%123%',123456 like '%321%';
  2. +--------------------+---------------------+---------------------+
  3. | 123456 like '123%' | 123456 like '%123%' | 123456 like '%321%' |
  4. +--------------------+---------------------+---------------------+
  5. | 1 | 1 | 0 |
  6. +--------------------+---------------------+---------------------+
  7. 1 row in set (0.00 sec)

 “REGEXP”运算符的使用格式为“str REGEXP str_pat”,当str 字符串中含有str_pat相匹配的字符串时,则返回值为1,否则返回0。

  1. mysql> select 'abcdef' regexp 'ab' ,'abcdefg' regexp 'k';
  2. +----------------------+----------------------+
  3. | 'abcdef' regexp 'ab' | 'abcdefg' regexp 'k' |
  4. +----------------------+----------------------+
  5. | 1 | 0 |
  6. +----------------------+----------------------+
  7. 1 row in set (0.00 sec)

Mysql 比较运算符详解的更多相关文章

  1. MySQL 联合索引详解

    MySQL 联合索引详解   联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a,b,c ...

  2. MySQL关闭过程详解和安全关闭MySQL的方法

    MySQL关闭过程详解和安全关闭MySQL的方法 www.hongkevip.com 时间: -- : 阅读: 整理: 红客VIP 分享到: 红客VIP(http://www.hongkevip.co ...

  3. 【转】Nginx+php-fpm+MySQL分离部署详解

    转:http://www.linuxidc.com/Linux/2015-07/120580.htm Nginx+php-fpm+MySQL分离部署详解 [日期:2015-07-26] 来源:Linu ...

  4. Linux centos7环境下安装MySQL的步骤详解

    Linux centos7环境下安装MySQL的步骤详解 安装MySQL mysql 有两个跟windows不同的地方 1).my.ini 保存到/etc/my.ini 2).用户权限,单独用户执行 ...

  5. Mysql加锁过程详解(8)-理解innodb的锁(record,gap,Next-Key lock)

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

  6. Mysql加锁过程详解(9)-innodb下的记录锁,间隙锁,next-key锁

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

  7. Mysql加锁过程详解(1)-基本知识

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

  8. Mysql加锁过程详解(2)-关于mysql 幻读理解

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

  9. Mysql加锁过程详解(3)-关于mysql 幻读理解

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

随机推荐

  1. linux 程序移植到Android

    用动态链接的方法: arm-linux-gcc hello.c -o hello.out -Wl,-dynamic-linker=/system/lib/ld-linux.so.3 并且拷贝文件到安卓 ...

  2. mysql重启,重启释放ibtmp1

    1.通过rpm包安装的MySQL service mysqld restart 2.从源码包安装的MySQL // linux关闭MySQL的命令$mysql_dir/bin/mysqladmin - ...

  3. 数学图形(2.9) Capareda曲线

    还是绕在球上的线圈 #http://www.mathcurve.com/courbes3d/capareda/capareda.shtml vertices = t = to (*PI) q = ra ...

  4. PHP免费的空间www.hostinger.co.uk

    免费的PHP空间:http://hostinger.co.uk hostinger是一个免费的PHP空间,不仅100%完全免费而且还没有广告,提供2G物理空间和100GMysql空间 可以一键安装Wo ...

  5. JVisualVM简介与内存泄漏实战分析

    JVisualVM简介与内存泄漏实战分析 学习了:https://blog.csdn.net/kl28978113/article/details/53817827

  6. Python Socket 编程——聊天室演示样例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和client的代码了解主要的 Python Socket 编程模型.本文再通过一个样例来加强一下对 Socket ...

  7. boost::asio 之udp协议的使用

    write by http://blog.csdn.net/bojie5744 bj_末雨 udp sender #include "stdafx.h" #include < ...

  8. Java程序猿面试体会,还没找到工作的“猿猿们”看过来!

    类似的话题,我大约在几个月前跟大家聊过. 这一次,我要依据这段时间的体会,再给大家整理一下.     今天,非常轻松地拿到了神州数码的offer. 尽管工资不是特别高,尽管非常多人一毕业就能进入这种公 ...

  9. rtsp摘要认证协议(Response计算方法)

    rtsp摘要认证协议(Response计算方法) 说明: 例如:OPTIONS rtsp://192.168.123.158:554/11RTSP/1.0   RTSP客户端应该使用username ...

  10. 【转】IT新人如何快速成长

    主动积极 主动积极包括很多方面了,主动学习.主动思考.主动承担责任等等.我觉得主动性很重要,如果你能做到这一点,那么肯定会把工作做的很好的. 学会学习 公司不是学校,需要改变由老师灌输知识的学习方式. ...