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

时间:2013-12-30 10:15:25

标签: boolean operators logic terminology relation

学习MySQL我对MySQL中的运算符分类感到困惑。

NOT逻辑运算符 (Details)

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

我无法掌握真正的差异。

3 个答案:

答案 0 :(得分:5)

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

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

另一方面,布尔人没有可以建立这种关系的“排序”* - 这是毫无意义的,例如,说'' IS NOT NULL。相反,我们根据他们的“真理”以及根据他们的逻辑有效性对他们采取行动的操作员来考虑它们:FALSE < TRUETRUE AND TRUEFALSE XOR TRUE等。

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

  • NOT FALSE在逻辑上与1 < 22 > 1

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

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

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


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

答案 1 :(得分:1)

简单地说,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

答案 2 :(得分:0)

简单来说:

  • 比较运算符按照使用的运算符比较不同方式的2个值,如==,!=,&gt;,&lt;,&gt; =,&lt; =和其他人。

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