mysql 比较函数和操作符

Posted ⬆️小马哥⬆️

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 比较函数和操作符相关的知识,希望对你有一定的参考价值。

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 比较函数和操作符的主要内容,如果未能解决你的问题,请参考以下文章

mysql-存储过程和函数-热身运动

linux中怎么查看mysql数据库版本

常用Javascript代码片段集锦

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

MySQL函数和操作符

mysql笔记-字段上的函数操作会使索引失效