1、算数运算符

  • MySQL 支持的算术运算符包括加、减、乘、除和模运算。

    运算符 作用
    + 加法,获得一个或多个值的和
    - 减法,从一个值中减去另一个值
    * 乘法,得到两个或多个值的乘积
    /,div 商运算,用一个值除以另一个值得到商
    %,mod 模运算,用一个值除以另外一个值得到余数
  • 1)在除法运算和模运算中,如果除数为 0,将是非法除数,返回结果为 NULL。

    > select 1/0, 100%0;+------+-------+| 1/0  | 100%0 |+------+-------+| NULL |  NULL |+------+-------+1 row in set, 2 warnings (0.00 sec)
  • 2)对于除法运算,还有另一种表达方式,使用 a div b 函数,从除法结果中舍弃小数点右侧的小数部分。

    > select 5/2, 5 div 2;+--------+---------+| 5/2    | 5 div 2 |+--------+---------+| 2.5000 |       2 |+--------+---------+1 row in set (0.00 sec)
  • 3)对于模运算,还有另一种表达方式,使用 mod(a,b) 函数与 a%b 效果一样。

    > select 5%2, mod(5, 2);+------+-----------+| 5%2  | mod(5, 2) |+------+-----------+|    1 |         1 |+------+-----------+1 row in set (0.00 sec)

2、比较运算符

  • 当使用 select 语句进行查询时, MySQL 允许用户对表达式的左边操作数和右边操作数进行比较,比较结果为真,则返回 1,为假则返回 0,比较结果不确定则返回 null。

  • 比较运算符可以用于比较数字、字符串和表达式。数字作为浮点数比较,而字符串以不区分大小写的方式进行比较。

    运算符 作用
    = 等于,用于比较运算符两侧的操作数是否相等,相等返回 1,否则为 0,null 不能用 "=" 比较
    <>、!= 不等于,和 "=" 相反,不等返回 1,否则为 0,null 不能用 "<>" 比较
    <=> null 安全的等于 (null-safe),和 "=" 类似,相等返回 1,可以比较 null
    < 小于
    <= 小于等于
    > 大于
    >= 大于等于
    between 存在于指定范围,a BETWEEN min AND max,当 a 大于等于 min 并且小于等于 max,则返回值为 1,否则返回0;操作数 a、min、max 类型相同时,此表达式等价于(a >= min and a <= max),当操作数类型不同时,比较时会遵循类型转换原则进行转换后,再进行比较运算
    in 存在于指定集合,a IN (value1, value2, …),当 a 的值存在于列表中时,则整个比较表达式返回的值为 1,否则返回 0
    is null 为 null,a IS NULL,当 a 的值为 null,则返回值为 1,否则返回 0
    is not null 不为 null,a IS NOT NULL,和 "is null" 相反,当 a 的值不为 NULL,则返回值为 1,否则返回 0
    like 通配符匹配,a LIKE %123%,当 a 中含有字符串 "123" 时,则返回值为 1,否则返回 0
    regexp、rlike 正则表达式,str REGEXP str_pat,当 str 字符串中含有 str_pat 相匹配的字符串时,则返回值为 1,否则返回 0
  • 示例

    > select 1 = 0, 1 = 1, NULL = NULL;+-------+-------+-------------+| 1 = 0 | 1 = 1 | NULL = NULL |+-------+-------+-------------+|     0 |     1 |        NULL |+-------+-------+-------------+1 row in set (0.00 sec)> select 1 = 0, 1 = 1, NULL = NULL;+-------+-------+-------------+| 1 = 0 | 1 = 1 | NULL = NULL |+-------+-------+-------------+|     0 |     1 |        NULL |+-------+-------+-------------+1 row in set (0.00 sec)> select 1 <=> 1, 2 <=> 0, 0 <=> 0, NULL <=> NULL;+---------+---------+---------+---------------+| 1 <=> 1 | 2 <=> 0 | 0 <=> 0 | NULL <=> NULL |+---------+---------+---------+---------------+|       1 |       0 |       1 |             1 |+---------+---------+---------+---------------+1 row in set (0.00 sec)> select 'a '< 'b', 'a' < 'a', 'a' < 'c', 1 < 2;+-----------+-----------+-----------+-------+| 'a '< 'b' | 'a' < 'a' | 'a' < 'c' | 1 < 2 |+-----------+-----------+-----------+-------+|         1 |         0 |         1 |     1 |+-----------+-----------+-----------+-------+1 row in set (0.00 sec)> select 'bdf' <= 'b', 'b' <= 'b', 0 < 1;+--------------+------------+-------+| 'bdf' <= 'b' | 'b' <= 'b' | 0 < 1 |+--------------+------------+-------+|            0 |          1 |     1 |+--------------+------------+-------+1 row in set (0.00 sec)> select 'a' > 'b', 'abc' > 'a', 1 > 0;+-----------+-------------+-------+| 'a' > 'b' | 'abc' > 'a' | 1 > 0 |+-----------+-------------+-------+|         0 |           1 |     1 |+-----------+-------------+-------+1 row in set (0.00 sec)> select 'a' >= 'b', 'abc' >= 'a', 1 >= 0, 1 >= 1;+------------+--------------+--------+--------+| 'a' >= 'b' | 'abc' >= 'a' | 1 >= 0 | 1 >= 1 |+------------+--------------+--------+--------+|          0 |            1 |      1 |      1 |+------------+--------------+--------+--------+1 row in set (0.00 sec)> select 10 between 10 and 20, 9 between 10 and 20;+----------------------+---------------------+| 10 between 10 and 20 | 9 between 10 and 20 |+----------------------+---------------------+|                    1 |                   0 |+----------------------+---------------------+1 row in set (0.00 sec)> select 1 in (1, 2, 3), 't' in ('t', 'a', 'b', 'l', 'e'), 0 in (1, 2);+----------------+----------------------------------+-------------+| 1 in (1, 2, 3) | 't' in ('t', 'a', 'b', 'l', 'e') | 0 in (1, 2) |+----------------+----------------------------------+-------------+|              1 |                                1 |           0 |+----------------+----------------------------------+-------------+1 row in set (0.00 sec)> select 0 is null, null is null;+-----------+--------------+| 0 is null | null is null |+-----------+--------------+|         0 |            1 |+-----------+--------------+1 row in set (0.00 sec)> select 0 is not null, null is not null;+---------------+------------------+| 0 is not null | null is not null |+---------------+------------------+|             1 |                0 |+---------------+------------------+1 row in set (0.00 sec)> select 123456 like '123%', 123456 like '%123%', 123456 like '%321%';+--------------------+---------------------+---------------------+| 123456 like '123%' | 123456 like '%123%' | 123456 like '%321%' |+--------------------+---------------------+---------------------+|                  1 |                   1 |                   0 |+--------------------+---------------------+---------------------+1 row in set (0.00 sec)> select 'abcdef' regexp 'ab', 'abcdefg' regexp 'k';+----------------------+----------------------+| 'abcdef' regexp 'ab' | 'abcdefg' regexp 'k' |+----------------------+----------------------+|                    1 |                    0 |+----------------------+----------------------+1 row in set (0.01 sec)

3、逻辑运算符

  • 逻辑运算符又称为布尔运算符,用来确认表达式的真和假。

    运算符 作用
    not、! 逻辑非,返回和操作数相反的结果:0(假)返回值为 1,否则值为 0。NOT NULL 的返回值为 NULL
    and、&& 逻辑与,当所有操作数均为非零值并且不为 NULL 时,计算所得结果为 1,当一个或多个操作数为 0 时,所得结果为 0,操作数中有任何一个为 NULL 则返回值为 NULL
    or、|| 逻辑或,当两个操作数均为非 NULL 值时,如有任意一个操作数为非零值,则结果为 1,否则结果为 0。当有一个操作数为 NULL 时,如另一个操作数为非零值,则结果为 1,否则结果为 NULL。假如两个操作数均为 NULL,则所得结果为 NULL
    xor 逻辑异或,任意一个操作数为 NULL 时,返回值为 NULL。对于非 NULL 的操作数,如果两个的逻辑真假值相异,则返回结果 1,否则返回 0
  • 示例

    > select not 0, not 1, not null;+-------+-------+----------+| not 0 | not 1 | not null |+-------+-------+----------+|     1 |     0 |     NULL |+-------+-------+----------+1 row in set (0.00 sec)> select 1 and 1, 0 and 1, 3 and 1, 1 and null;+---------+---------+---------+------------+| 1 and 1 | 0 and 1 | 3 and 1 | 1 and null |+---------+---------+---------+------------+|       1 |       0 |       1 |       NULL |+---------+---------+---------+------------+1 row in set (0.00 sec)> select 1 or 0, 0 or 0, 1 or null, 1 or 1, null or null;+--------+--------+-----------+--------+--------------+| 1 or 0 | 0 or 0 | 1 or null | 1 or 1 | null or null |+--------+--------+-----------+--------+--------------+|      1 |      0 |         1 |      1 |         NULL |+--------+--------+-----------+--------+--------------+1 row in set (0.00 sec)> select 1 xor 1, 0 xor 0, 1 xor 0, 0 xor 1, null xor 1;+---------+---------+---------+---------+------------+| 1 xor 1 | 0 xor 0 | 1 xor 0 | 0 xor 1 | null xor 1 |+---------+---------+---------+---------+------------+|       0 |       0 |       1 |       1 |       NULL |+---------+---------+---------+---------+------------+1 row in set (0.00 sec)

4、位运算符

  • 位运算是将给定的操作数转化为二进制后,对各个操作数每一位都进行指定的逻辑运算,得到的二进制结果转换为十进制数后就是位运算的结果。

    运算符 作用
    & 位与(位 and),对多个操作数的二进制位做逻辑与操作
    | 位或(位 or),对多个操作数的二进制位做逻辑或操作
    ^ 位异或(位 xor),对操作数的二进制位做异或操作
    ~ 位取反,对操作数的二进制位做 not 操作,这里的操作数只能是一位
    >> 位右移,左操作数向右移动右操作数指定的位数,左边补 0
    << 位左移,右操作数向左移动左操作数指定的位数。右边补 0
  • 示例

    > select 2&3&4;+-------+| 2&3&4 |+-------+|     0 |+-------+1 row in set (0.00 sec)> select 2|3;+-----+| 2|3 |+-----+|   3 |+-----+1 row in set (0.00 sec)> select 2^3;+-----+| 2^3 |+-----+|   1 |+-----+> select ~1 , ~18446744073709551614;+----------------------+------------------------+|                   ~1 | ~ 18446744073709551614 |+----------------------+------------------------+| 18446744073709551614 |                      1 |+----------------------+------------------------+1 row in set (0.00 sec)> select 100 >> 3;+----------+| 100 >> 3 |+----------+|       12 |+----------+1 row in set (0.00 sec)> select 100 << 3;+----------+| 100 << 3 |+----------+|      800 |+----------+1 row in set (0.00 sec)

5、运算符的优先级

  • 优先级顺序

    优先级顺序 运算符
    1 :=
    2 ||, OR, XOR
    3 &&, AND
    4 NOT
    5 BETWEEN, CASE, WHEN, THEN, ELSE
    6 =, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
    7 |
    8 &
    9 <<, >>
    10 -, +
    11 *, /, DIV, %, MOD
    12 ^
    13 - (unary minus), ~ (unary bit inversion)
    14 !
  • 实际上,很少有人能将这些优先级熟练记忆,很多情况下我们都是用 "()" 来将需要优先的操作括起来,这样既起到了优先的作用,又使得其他用户看起来更易于理解。

转载于:https://www.cnblogs.com/QianChia/p/9202470.html

MySQL 中的运算符相关推荐

  1. java:去除字符串中空格 、 oracle (+) 、 mysql中数值运算符和函数

    java:去除字符串中空格 http://www.cnblogs.com/LiuChunfu/p/5661810.html oracle:oracle (+) https://zhidao.baidu ...

  2. mysql中连接运算符_MySQL的运算符

    1.算术运算 运算符 作用 + 加法 - 减法 * 乘法 / (div) 除法 (整除) % (mod) 求余 运算代码 结果 运算代码 结果 select -4/-3; //1.3333 selec ...

  3. 详细介绍mysql中的运算符

    运算符 1.算术运算符 算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加(+).减(-).乘(*).除(/)和取模(%)运算. 加法与减法运算符 由运算结果可以 ...

  4. mysql中的运算符的执行顺序_【MySQL】执行顺序

    我去找你❤️ 我给你买❤️ 我带你去❤️ 我很爱你❤️ 我们回家❤️ 我们结婚❤️ 你听过最孤独的话是什么? 同学,code就剩你没提交了 今天讨论的话题是 MySQL执行顺序 ??? 先养眼,再看题 ...

  5. MySql中的运算符

    MySQL的类型主要包括:算术运算符,比较运算符,逻辑运算符和位运算符. 1.算术运算符:加.减.乘.除和模运算.他们是最常用和最简单的一类运算符. "+" 用于获得一个或多个值的 ...

  6. 12-12. MySQL中常见运算符(算数运算符、比较运算符、逻辑运算符)

     当对SQL语句中的某个值.某个字段做运算操作的时候 算术运算符 +.-.*./(div).%(mod) 比较运算符 =  等于 <>或 !=   不等于 <=>    用于n ...

  7. MySQL数据库,从入门到精通:第四篇——MySQL中常用的运算符及其用法

    MySQl学习(MySQL数据库,从入门到精通:第四篇--MySQL中常用的运算符及其用法 第四篇_MySQL中常用的运算符及其用法运算符 1. 算术运算符 1.加法与减法运算符 2.乘法与除法运算符 ...

  8. mysql中limit后面不能使用运算符

    mysql中limit后面不能使用运算符 进行分页查询的时候,如果写成以下sql,语句执行会报错: select * from user where id = 123456 and code = 11 ...

  9. mysql中like与rlike_MySQL中RLIKE运算符的使用详解-mysql教程-

    在MySQL中,RLIKE运算符用于确定字符串是否匹配正则表达式.它是REGEXP_LIKE()的同义词. 如果字符串与提供的正则表达式匹配,则结果为1,否则为0. 语法是这样的: expr RLIK ...

最新文章

  1. cocos2d-x 3.2读取xml和json练习
  2. C++11线程管理基础
  3. 【今日CS 视觉论文速览】 21 Jan 2019
  4. 写作就像升级打怪,4个实战技巧让你“写什么都很棒”!
  5. 通用for_each清理容器模板函数
  6. java day29【DBC基本概念 、快速入门 、对JDBC中各个接口和类详解】
  7. java ir_基本功 | Java即时编译器原理解析及实践
  8. 梯度下降法 与 最速下降法 的区别
  9. unity3d中如何把对象存进数组
  10. 【电磁】Matlab模拟电机内电磁场的分布附GUI界面
  11. VMware vSphere 7 vCenter 7 ESXi 7 正式版 免费下载
  12. cortex a8 java_ARM Cortex-
  13. OSG学习之几何图形
  14. 小程序进度条_【好玩的游戏大全】我的煎饼屋:好玩的摆摊微信小游戏小程序...
  15. java 查询微信支付订单
  16. 百度云盘 油猴下载助手脚本【绝对可用】
  17. 通过SqlDbx导出*.sql
  18. 古琴入门篇|古琴指法及符号解析
  19. 类型转换——int转换成char(截短)
  20. 《计算机组成原理》第五章指令系统 部分课后习题答案 清华大学出版_秦磊华_谭志虎

热门文章

  1. Java实现文件的预览
  2. Eclipse启动之二:Eclipse动态库(百度空间迁移)
  3. Lombok: Java开发的利器
  4. HDU 4333 [SAM WRONG!!!]
  5. mac curl命令下载文件
  6. Eclipse和PyDev搭建完美Python开发环境(Windows篇)(转)
  7. Docker 1.3.2发布:修复重大安全问题
  8. Android设置多个定时器时只有最后一个定时器有效的问题
  9. Python学习笔记(二):标准流与重定向
  10. 资源2010-01-29