zoukankan      html  css  js  c++  java
  • MySQL教程54-MySQL逻辑运算符

    逻辑运算符又称为布尔运算符,用来确定表达式的真和假。MySQL中支持的逻辑运算符如下表所示。

    MySQL 中的逻辑运算符
    运算符作用
    NOT 或者 ! 逻辑非
    AND 或者 && 逻辑与
    OR 和 || 逻辑或
    XOR 逻辑异或

    下面分别讨论 MySQL 逻辑运算符的使用方法。

    NOT!都是逻辑非运算符,返回和操作数相反的结果,具体语法规则为:

    • 当操作数为 0(假)时,返回值为 1;
    • 当操作数为非零值时,返回值为 0;
    • 当操作数为 NULL 时,返回值为 NULL。

    【实例1】分别使用非运算符 NOT 或者 ! 进行逻辑判断,运行结果如下:

    由运行结果可以看出,NOT 1+1! 1+1的返回值不同,这是因为 NOT 与 ! 的优先级不同:

    • NOT 的优先级低于 +,因此NOT 1+1相当于NOT(1+1),先计算1+1,然后再进行 NOT 运算,由于操作数不为 0,因此NOT 1+1的结果是 0;
    • 相反,! 的优先级别要高于 +,因此! 1+1相当于(!1)+1,先计算!1结果为 0,再加 1,最后结果为 1。

    注意: 在使用运算符运算时,一定要注意运算符的优先级,如果不能确定计算顺序,最好使用括号,以保证运算结果的正确。

    逻辑与运算符(AND 或者 &&)

    AND 和 && 都是逻辑与运算符,具体语法规则为:

    • 当所有操作数都为非零值并且不为 NULL 时,返回值为 1;
    • 当一个或多个操作数为 0 时,返回值为 0;
    • 操作数中有任何一个为 NULL 时,返回值为 NULL。

    【实例2】分别使用与运算符 AND 和 && 进行逻辑判断,运行结果如下:

    由结果可以看到,AND 和 && 的作用相同。1 AND-1中没有 0 或者 NULL,所以返回值为 1;1 AND 0中有操作数 0,所以返回值为 0;1 AND NULL虽然有 NULL,所以返回值为 NULL。

    注意:AND 运算符可以有多个操作数,但要注意多个操作数运算时,AND 两边一定要使用空格隔开,不然会影响结果的正确性。

    逻辑或运算符(OR 或者 ||)

    • 当两个操作数都为非 NULL 值时,如果有任意一个操作数为非零值,则返回值为 1,否则结果为 0;
    • 当有一个操作数为 NULL 时,如果另一个操作数为非零值,则返回值为 1,否则结果为NULL;
    • 假如两个操作数均为 NULL 时,则返回值为 NULL。

    【实例3】分别使用或运算符 OR 和 || 进行逻辑判断,运行结果如下:

    由结果可以看到,OR 和 || 的作用相同。下面是对各个结果的解析:

    • 1 OR -1 OR 0含有 0,但同时包含有非 0 的值 1 和 -1,所以返回结果为 1;
    • 1 OR 2中没有操作数 0,所以返回结果为 1;
    • 1 OR NULL虽然有 NULL,但是有操作数 1,所以返回结果为 1;
    • 0 OR NULL中没有非 0 值,并且有 NULL,所以返回值为 NULL;
    • NULL OR NULL中只有NULL,所以返回值为NULL。

    异或运算(XOR 运算符)

    XOR 表示逻辑异或,具体语法规则为:

    • 当任意一个操作数为 NULL 时,返回值为 NULL;
    • 对于非 NULL 的操作数,如果两个操作数都是非 0 值或者都是 0 值,则返回值为 0;
    • 如果一个为0值,另一个为非 0 值,返回值为 1。

    【实例4】使用异或运算符 XOR 进行逻辑判断,SQL语句如下:

    由结果可以看到:

    • 1 XOR 10 XOR 0中运算符两边的操作数都为非零值,或者都是零值,因此返回 0;
    • 1 XOR 0中两边的操作数,一个为 0 值,另一个为非 0 值,所以返回值为 1;
    • 1 XOR NULL中有一个操作数为 NULL,所以返回值为 NULL;
    • 1 XOR 1 XOR 1中有多个操作数,运算符相同,因此运算顺序从左到右依次计算,1 XOR 1的结果为 0,再与 1 进行异或运算,所以返回值为 1。

    提示:a XOR b 的计算等同于 (a AND (NOT b))或者 ((NOT a) AND b)。

  • 相关阅读:
    【今日CV 视觉论文速览】 19 Nov 2018
    【numpy求和】numpy.sum()求和
    【今日CV 视觉论文速览】16 Nov 2018
    【今日CV 视觉论文速览】15 Nov 2018
    poj 2454 Jersey Politics 随机化
    poj 3318 Matrix Multiplication 随机化算法
    hdu 3400 Line belt 三分法
    poj 3301 Texas Trip 三分法
    poj 2976 Dropping tests 0/1分数规划
    poj 3440 Coin Toss 概率问题
  • 原文地址:https://www.cnblogs.com/no-celery/p/13527462.html
Copyright © 2011-2022 走看看