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

问题描述 投票:3回答:3

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

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

NOT LIKE, LIKE, IS NOT, IS NULL是比较运营商。 (Details)

我无法理解真正的区别。

boolean operators logic terminology relation
3个回答
5
投票

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

比较运算符根据操作数类型集的排序测试其操作数之间的关系,并返回布尔结果: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。因此,对他们的布尔结构确实存在排序,尽管这不会影响概念上的区别。


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。如果操作数为NOT NULL,则返回NULL。

访问:MySQL Operators

访问:NOT ! Operator


0
投票

简单来说:

  • 比较运算符按照使用的运算符比较不同方式的2个值,如==,!=,>,<,> =,<=等。
  • 另一方面,逻辑运算符将检查比较运算符返回的条件(大于1),然后按结果执行操作。
© www.soinside.com 2019 - 2024. All rights reserved.