MYSQL之中的比较函数和操作符:

1、[NOT] BETWEEN ... AND ...  Check whether a value is within a range of values

说明:expr between min and max

  如果expr大于或等于表达式是否小于或等于最大和最小之间,返回1,否则返回0。
  如果所有参数的类型相同,这相当于表达式(min<=expr和expr<=max)。否则会进行相应的类型转换。
  

mysql> SELECT 2 BETWEEN 1 AND 3, 2 BETWEEN 3 and 1;
-> 1, 0
mysql> SELECT 1 BETWEEN 2 AND 3;
-> 0
mysql> SELECT 'b' BETWEEN 'a' AND 'c';
-> 1
mysql> SELECT 2 BETWEEN 2 AND '3';
-> 1
mysql> SELECT 2 BETWEEN 2 AND 'x-3';
-> 0

  

 

2、COALESCE(value1,...) :返回第一个非NULL的参数

  说明:返回列表中第一个非空值,如果没有非NULL值,则返回NULL。

 

mysql> SELECT COALESCE(NULL,1);
-> 1
mysql> SELECT COALESCE(NULL,NULL,NULL);
-> NULL 

3、GREATEST(value1,value2,...)

  说明:返回参数列表中最大的参数

mysql> SELECT GREATEST(2,0);
-> 2
mysql> SELECT GREATEST(34.0,3.0,5.0,767.0);
-> 767.0
mysql> SELECT GREATEST('B','A','C');
-> 'C'

4、[not] IN() -- 检查值是否在数据集中

  说明:expr IN (value,...); 如果expr等于values列表中的任何一个值则返回true,否则返回false;

  如果value列表全是常数,mysql会根据expr的类型进行排序,然后进行二进制查找,这样非常快速。

mysql> SELECT 2 IN (0,3,5,7);
-> 0
mysql> SELECT 'wefwf' IN ('wee','wefwf','weg');
-> 1

  尽量不要在一个列表中混合使用引用和未加引号的值,因为比较引用值的规则(如字符串)和未加引号的值(如数字)不同。因此,混合类型可能导致不一致的结果。例如,不要写一个这样的表达:

错误的写法:
SELECT val1 FROM tbl1 WHERE val1 IN (1,2,'a'); 正确的写法:
SELECT val1 FROM tbl1 WHERE val1 IN ('1','2','a');

5、 ISNULL(expr)

  说明:如果expr为NULL,返回1,否则返回 0;

mysql> SELECT ISNULL(1+1);
-> 0
mysql> SELECT ISNULL(1/0);
-> 1

5.1、IS NULL: 测试值是否为NULL

mysql> SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL;
-> 0, 0, 1

5.2、<=>

  说明:该操作符是安全的NULL比较符号,此运算符执行相等比较类似=运算符,但如果两个操作数为NULL,而不是NULL,则返回1,如果一个操作数为NULL返回0,而不是NULL。

  

mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
-> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
-> 1, NULL, NULL

5.3、 IS boolean value

  说明:测试值是否为boolean值,boolean的值可以是TRUE,FALSE或者UNKNOW

mysql> SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN;
-> 1, 1, 1

6、INTERVAL(N,N1,N2,...)

  说明:N < N1返回0,N < N2返回1,一次类推。如果N为NULL返回-1.所有的参数作为整数看待,要求参数满足N1<N2<...<Nn,这样能够快速的进行这版查找

mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200);
-> 3
mysql> SELECT INTERVAL(10, 1, 10, 100, 1000);
-> 2
mysql> SELECT INTERVAL(22, 23, 30, 44, 200);
-> 0

7、LEAST(value1,value2,...)

  说明:返回value列表中的最小值。

  如果所有的参数都是NULL,则结果也是NULL,不需要进行比较

  如果所有参数都是整数,则会返回一个整数,进行整数比较

  如果所有参数是实数,则返回一个实数,进行实数比较

  如果参数是由 数字和字符串构成,参数将作为数字进行比较

  如果所有参数都是非二进制的字符串,则作为非二进制字符计较

  其它情况,将参数统统作为二进制比较

mysql> SELECT LEAST(2,0);
-> 0
mysql> SELECT LEAST(34.0,3.0,5.0,767.0);
-> 3.0
mysql> SELECT LEAST('B','A','C');
-> 'A'
mysql> select least(10,'a')
-> 0

mysql 比较函数和操作符的更多相关文章

  1. 如何理解 MySQL 中的 <=> 操作符?

    问题 : 我在看以前的一个开发者的代码时看到 WHERE p.name <=> NULL 在这个查询语句中 <=>符号是什么意思啊?是不是和 =号是一样啊?还是一个语法错误啊? ...

  2. MySql 中的<=>操作符

    今天在学习数据库的索引优化时,关于memory存储引擎的的hash索引时,看到了操作符<=> ,这个操作符还是第一次见到,于是上网查了一下.我想大家应该知道 =  !=   <> ...

  3. 七:MYSQL之常用操作符

    前言: 运算符连接表达式中各个操作数,其作用是用来指明对操作数所进行的运算. 常见的运算有数学计算.比较运算.位运算及逻辑运算 一:算数运算符 用于各类数值运算.包括加(+).减(-).乘(*).除( ...

  4. mysql函数和操作符

    mysql,); //取模函数 +-----------+ ,) | +-----------+ | +-----------+ row in set (0.00 sec) mysql,); +--- ...

  5. SqlServer与MySql的一些常用用法的差别

    最近学习了一下mySql,总结一下SqlServer不同一些用法: 操作符优先级以下列表显示了操作符优先级的由低到高的顺序.排列在同一行的操作符具有相同的优先级.:=||, OR, XOR&& ...

  6. mysql 基本使用教程(源于网络)

    http://dev.mysql.com/doc/refman/5.1/zh/index.html 3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择 ...

  7. MySQL 5.1参考手册

    目录 前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. My ...

  8. Mysql Json函数之搜索 (三)

    本节中的函数对JSON值执行搜索操作,以从其中提取数据,报告数据是否在其中的某个位置或报告其中的数据的路径. JSON_CONTAINS(target, candidate[, path]) 通过返回 ...

  9. MySQL(七)MySQL常用函数

    前言 上一篇给大家介绍了,MySQL常用的操作符其实已经是非常的详细了,现在给大家分享的是MySQL的常用函数.希望对我和对大家都有帮助. 一.字符串函数 1.1.LOWER.lcase(string ...

随机推荐

  1. NFS基础配置

    需要安装的包: rpc-bind nfs-utils 修改配置文件 /etc/exports 配置 /tmp *(ro) 修改配置之后记得重启服务 sudo systemctl restart nfs ...

  2. Java 8 lambda表达式示例

    例1.用lambda表达式实现Runnable 我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现Runnable接口是匿名类的最好示例.看一下Java 8之前的runna ...

  3. poj 2253 一条路径中的最大边 再找出最小的

    题目大意,有两只青蛙,分别在两个石头上,青蛙A想要到青蛙B那儿去,他可以直接跳到B的石头上,也可以跳到其他石头上,再从其他石头跳到B那儿,求青蛙从A到B的所有路径中最小的Frog Distance,我 ...

  4. 德卡Z90读卡器读取社保卡,德卡Z90读卡器CSharp示例程序源码

    前言,最近学习调用 医保卡业务,使用德卡读卡器,主要就是调用一个DLL,动态库文件. 借着自学的机会把心得体会都记录下来,方便感兴趣的小伙伴学习与讨论. 内容均系原创,欢迎大家转载分享,但转载的同时别 ...

  5. df -h命令卡死解决办法

    1.现象 同事突然反应说有个服务器进入/目录运行 ls  -l 无反应,同时运行df  -h也卡死了.如果你的机器有用到nfs请直接看第四大点. 2.分析 运行mount [conversant@sw ...

  6. rpm包软件管理

    一.rpm介绍 linux服务器中所有的软件包安装方式有两种,一种是源码安装.另一种是二进制包安装(rpm)源码包安装的好处是适合不同的发行版本的linux,缺点是在编译过程中花费的时间很长,二进制包 ...

  7. 【AtCoder】ARC091

    C - Flip,Flip, and Flip...... 只有一个这一个是反面 只有一行那么除了两边以外都是反面 否则输出\((N - 2)*(M - 2)\) #include <bits/ ...

  8. SpringBoot属性配置

    一:url的配置 1.配置 默认配置文件是application.properties 2.配置 配置端口 配置context path 3.启动效果 4.第二种配置方式 要先删除applicatio ...

  9. Java Socket实战之一 单线程通信基础socket

    现在做Java直接使用Socket的情况是越来越少,因为有很多的选择可选,比如说可以用spring,其中就可以支持很多种远程连接的操作,另外jboss的remoting也是不错的选择,还有Apache ...

  10. python删除执行路径下的空文件夹

    def rm_emp_dir(path): """ 删除指定路径下的空文件夹 :param path: 指定路径 :type path: str :return: Non ...