【问题标题】:What is the difference between Logical and Comparison operators in MySQL?MySQL中的逻辑和比较运算符有什么区别?
【发布时间】:2014-01-17 05:09:32
【问题描述】:

学习 MySQL 我对 MySQL 中的运算符分类有些困惑。

NOT 是一个逻辑运算符 (Details)

NOT LIKE, LIKE, IS NOT, IS NULL比较运算符(Details)

我无法掌握真正的区别。

【问题讨论】:

    标签: boolean operators logic terminology relation


    【解决方案1】:

    逻辑运算符的操作数是布尔值;而比较运算符可以有任何类型的操作数。

    比较运算符根据操作数类型集上的排序测试其操作数之间的关系,并返回布尔结果:1 < 2'hello' > 'aardvark'CURRENT_DATE = '2013-12-30''peanut' LIKE 'pea%''walnut' NOT LIKE 'pea%''' IS NOT NULL

    另一方面,布尔值没有可以建立这种关系的“顺序”*——例如,说FALSE < TRUE 是毫无意义的。相反,我们根据它们的“真实性”来考虑它们,并根据它们的逻辑有效性来考虑它们:TRUE AND TRUEFALSE XOR TRUENOT FALSE 等。

    当然,在很多情况下,同一个逻辑结果可以用多种方式表达——例如:

    • 1 < 2 在逻辑上与2 > 1NOT (1 >= 2) 相同

    • 'walnut' NOT LIKE 'pea%'在逻辑上与NOT ('walnut' LIKE 'pea%')相同

    • '' IS NOT NULL在逻辑上与NOT ('' IS NULL)相同

    但是,否定比较涉及除了比较操作之外的逻辑操作(取反),而立即产生所需结果的单个比较操作通常更简洁/可读,并且可能更易于计算机优化。


    * 某些语言(如 MySQL)没有真正的布尔类型,而是使用零和非零整数分别表示 FALSETRUE。因此,在它们的布尔值上确实存在排序,尽管这不会影响概念上的区别。

    【讨论】:

    • 如果我说:“比较运算符用于比较两个值和逻辑运算符______”。你会如何完成这句话?
    • @YousufMemon:在那句话中,我可能会改变我定义比较运算符的方式。见我上面的修订。
    • 我将撰写这篇文章 CW,因为我很确定这个答案可以由比我更聪明的人来改进。
    • @YousufMemon ... 和逻辑运算符仅对布尔类型执行逻辑运算。
    【解决方案2】:

    简单地说,NOT LIKE, LIKE, IS NOT 用于比较两个值。例如:

    SELECT * FROM `table_name` WHERE `name` NOT LIKE `examplename`;
    SELECT * FROM `table_name` WHERE `key_col` IS NULL;
    

    NOT 返回值的倒数。在大多数情况下,它与!= 相同。示例:

    SELECT * FROM `student` WHERE NOT (student_id = 1);
    

    如果操作数为 0,则运算符返回 1,如果操作数非零,则返回 0。如果操作数不是 NULL,则返回 NULL。

    访问:MySQL Operators

    访问:NOT ! Operator

    【讨论】:

      【解决方案3】:

      简单来说:

      • 比较运算符根据 ==、!=、>、=、

      • 另一方面,逻辑运算符将通过比较运算符检查条件(大于1)返回,然后根据结果执行操作。

      【讨论】:

        猜你喜欢
        • 2015-07-03
        • 2012-07-16
        • 1970-01-01
        • 2015-06-30
        • 1970-01-01
        • 1970-01-01
        • 2021-01-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多