阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      MySQL 运算符

      MySQL 运算符

      本章节我们主要介绍 MySQL 的运算符及运算符的优先级。 MySQL 主要有以下几种运算符:

      • 算术运算符
      • 比较运算符
      • 逻辑运算符
      • 位运算符

      算术运算符

      MySQL 支持的算术运算符包括:

      运算符作用
      +加法
      -减法
      *乘法
      / 或 DIV除法
      % 或 MOD取余

      在除法运算和模运算中,如果除数为 0,将是非法除数,返回结果为 NULL。

      1、加

      mysql> select 1+2;
      +-----+
      | 1+2 |
      +-----+
      |   3 |
      +-----+
      

      2、减

      mysql> select 1-2;
      +-----+
      | 1-2 |
      +-----+
      |  -1 |
      +-----+
      

      3、乘

      mysql> select 2*3;
      +-----+
      | 2*3 |
      +-----+
      |   6 |
      +-----+
      

      4、除

      mysql> select 2/3;
      +--------+
      | 2/3    |
      +--------+
      | 0.6667 |
      +--------+
      

      5、商

      mysql> select 10 DIV 4;
      +----------+
      | 10 DIV 4 |
      +----------+
      |        2 |
      +----------+
      

      6、取余

      mysql> select 10 MOD 4;
      +----------+
      | 10 MOD 4 |
      +----------+
      |        2 |
      +----------+
      

      比较运算符

      SELECT 语句中的条件语句经常要使用比较运算符。通过这些比较运算符,可以判断表中的哪些记录是符合条件的。比较结果为真,则返回 1,为假则返回 0,比较结果不确定则返回 NULL。

      符号描述备注
      =等于
      <>, !=不等于
      >大于
      <小于
      <=小于等于
      >=大于等于
      BETWEEN在两值之间>=min&&<=max
      NOT BETWEEN不在两值之间
      IN在集合中
      NOT IN不在集合中
      <=>严格比较两个 NULL 值是否相等两个操作码均为 NULL 时,其所得值为 1;而当一个操作码为 NULL 时,其所得值为 0
      LIKE模糊匹配
      REGEXP 或 RLIKE正则式匹配
      IS NULL为空
      IS NOT NULL不为空

      1、等于

      mysql> select 2=3;
      +-----+
      | 2=3 |
      +-----+
      |   0 |
      +-----+
      
      
      mysql> select NULL = NULL;
      +-------------+
      | NULL = NULL |
      +-------------+
      |        NULL |
      +-------------+
      
      

      2、不等于

      mysql> select 2<>3;
      +------+
      | 2<>3 |
      +------+
      |    1 |
      +------+
      

      3、安全等于

      与 = 的区别在于当两个操作码均为 NULL 时,其所得值为 1 而不为 NULL,而当一个操作码为 NULL 时,其所得值为 0 而不为 NULL。

      mysql> select 2<=>3;
      +-------+
      | 2<=>3 |
      +-------+
      |     0 |
      +-------+
      
      
      mysql> select null=null;
      +-----------+
      | null=null |
      +-----------+
      |      NULL |
      +-----------+
      
      
      mysql> select null<=>null;
      +-------------+
      | null<=>null |
      +-------------+
      |           1 |
      +-------------+
      

      4、小于

      mysql> select 2<3;
      +-----+
      | 2<3 |
      +-----+
      |   1 |
      +-----+
      

      5、小于等于

      mysql> select 2<=3;
      +------+
      | 2<=3 |
      +------+
      |    1 |
      +------+
      

      6、大于

      mysql> select 2>3;
      +-----+
      | 2>3 |
      +-----+
      |   0 |
      +-----+
      

      7、大于等于

      mysql> select 2>=3;
      +------+
      | 2>=3 |
      +------+
      |    0 |
      +------+
      

      8、BETWEEN

      mysql> select 5 between 1 and 10;
      +--------------------+
      | 5 between 1 and 10 |
      +--------------------+
      |                  1 |
      +--------------------+
      

      9、IN

      mysql> select 5 in (1,2,3,4,5);
      +------------------+
      | 5 in (1,2,3,4,5) |
      +------------------+
      |                1 |
      +------------------+
      

      10、NOT IN

      mysql> select 5 not in (1,2,3,4,5);
      +----------------------+
      | 5 not in (1,2,3,4,5) |
      +----------------------+
      |                    0 |
      +----------------------+
      

      11、IS NULL

      mysql> select null is NULL;
      +--------------+
      | null is NULL |
      +--------------+
      |            1 |
      +--------------+
      
      mysql> select 'a' is NULL;
      +-------------+
      | 'a' is NULL |
      +-------------+
      |           0 |
      +-------------+
      

      12、IS NOT NULL

      mysql> select null IS NOT NULL;
      +------------------+
      | null IS NOT NULL |
      +------------------+
      |                0 |
      +------------------+
      
      
      mysql> select 'a' IS NOT NULL;
      +-----------------+
      | 'a' IS NOT NULL |
      +-----------------+
      |               1 |
      +-----------------+
      

      13、LIKE

      mysql> select '12345' like '12%';
      +--------------------+
      | '12345' like '12%' |
      +--------------------+
      |                  1 |
      +--------------------+
      
      mysql> select '12345' like '12_';
      +--------------------+
      | '12345' like '12_' |
      +--------------------+
      |                  0 |
      +--------------------+
      

      14、REGEXP

      mysql> select 'beijing' REGEXP 'jing';
      +-------------------------+
      | 'beijing' REGEXP 'jing' |
      +-------------------------+
      |                       1 |
      +-------------------------+
      
      mysql> select 'beijing' REGEXP 'xi';
      +-----------------------+
      | 'beijing' REGEXP 'xi' |
      +-----------------------+
      |                     0 |
      +-----------------------+
      

      逻辑运算符

      逻辑运算符用来判断表达式的真假。如果表达式是真,结果返回 1。如果表达式是假,结果返回 0。

      运算符号作用
      NOT 或 !逻辑非
      AND逻辑与
      OR逻辑或
      XOR逻辑异或

      1、与

      mysql> select 2 and 0;
      +---------+
      | 2 and 0 |
      +---------+
      |       0 |
      +---------+
      
      
      mysql> select 2 and 1;
      +---------+
      | 2 and 1 |
      +---------+
      |       1 |
      +---------+
      

      2、或

      mysql> select 2 or 0;
      +--------+
      | 2 or 0 |
      +--------+
      |      1 |
      +--------+
      
      mysql> select 2 or 1;
      +--------+
      | 2 or 1 |
      +--------+
      |      1 |
      +--------+
      
      mysql> select 0 or 0;
      +--------+
      | 0 or 0 |
      +--------+
      |      0 |
      +--------+
      
      mysql> select 1 || 0;
      +--------+
      | 1 || 0 |
      +--------+
      |      1 |
      +--------+
      

      3、非

      mysql> select not 1;
      +-------+
      | not 1 |
      +-------+
      |     0 |
      +-------+
      
      mysql> select !0;
      +----+
      | !0 |
      +----+
      |  1 |
      +----+
      

      4、异或

      mysql> select 1 xor 1;
      +---------+
      | 1 xor 1 |
      +---------+
      |       0 |
      +---------+
      
      mysql> select 0 xor 0;
      +---------+
      | 0 xor 0 |
      +---------+
      |       0 |
      +---------+
      
      mysql> select 1 xor 0;
      +---------+
      | 1 xor 0 |
      +---------+
      |       1 |
      +---------+
      
      mysql> select null or 1;
      +-----------+
      | null or 1 |
      +-----------+
      |         1 |
      +-----------+
      
      mysql> select 1 ^ 0;
      +-------+
      | 1 ^ 0 |
      +-------+
      |     1 |
      +-------+
      

      位运算符

      位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,进行位运算。然后再将计算结果从二进制数变回十进制数。

      运算符号作用
      &按位与
      ^按位异或
      !取反
      «左移
      >>右移

      1、按位与

      mysql> select 3&5;
      +-----+
      | 3&5 |
      +-----+
      |   1 |
      +-----+
      

      2、按位或

      mysql> select 3|5;
      +-----+
      | 3|5 |
      +-----+
      |   7 |
      +-----+
      

      3、按位异或

      mysql> select 3^5;
      +-----+
      | 3^5 |
      +-----+
      |   6 |
      +-----+
      

      4、按位取反

      mysql> select ~18446744073709551612;
      +-----------------------+
      | ~18446744073709551612 |
      +-----------------------+
      |                     3 |
      +-----------------------+
      

      5、按位右移

      mysql> select 3>>1;
      +------+
      | 3>>1 |
      +------+
      |    1 |
      +------+
      

      6、按位左移

      mysql> select 3<<1;
      +------+
      | 3<<1 |
      +------+
      |    6 |
      +------+
      

      运算符优先级

      最低优先级为: :=。

      最高优先级为: !BINARYCOLLATE

      目录
      目录