MySQL中的逻辑运算符和比较运算符有什么区别?

You*_*mon 3 logic boolean terminology operators relation

研究MySQL我对MySQL中的运算符分类产生了一些困惑.

NOT是一个逻辑运算符 (详细信息)

虽然NOT LIKE, LIKE, IS NOT, IS NULL比较运营商.(细节)

我无法理解真正的区别.

egg*_*yal 5

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

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

另一方面,布尔人没有"订购",通过这种"排序"可以建立这种关系* - 例如说,这是毫无意义的FALSE < TRUE.相反,我们想想他们在他们的"真理"的条款和他们的逻辑有效性方面对他们行动的运营商:TRUE AND TRUE,FALSE XOR TRUE,NOT FALSE等.

当然,在许多情况下,可以用多种方式表达相同的逻辑结果 - 例如:

  • 1 < 2在逻辑上是相同的两个2 > 1NOT (1 >= 2)

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

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

然而,除了比较操作之外,否定比较涉及逻辑操作(否定),而立即产生期望结果的单个比较操作通常更简洁/可读并且可能更容易使计算机优化.


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