7

我想知道为什么 MYSQL 在条件语句中使用单个等号而不是更典型的两个等号。这有技术/历史原因吗?谢谢。

4

3 回答 3

9

嗨,我想知道为什么 MYSQL 在条件语句中使用单个等号而不是更典型的两个等号。这有技术/历史原因吗?谢谢。

比较SQL比分配更常见。

这就是为什么SQL使用更短的语法来做更常见的事情的原因。

在经典SQL中,比较可以通过上下文与赋值区分开来(赋值只能在SET语句的子句中UPDATE),这就是为什么一个运算符可以用于两种操作的原因。

MySQL的扩展中SQL,对会话变量的赋值表示为:=

于 2009-07-15T17:13:52.023 回答
7

更像历史。

是 SQL。自 70 年代初以来,它就使用单个等号进行比较。

于 2009-07-15T17:10:58.143 回答
5

SQL 中从不存在歧义。

在CJDate 的原始 SQL 标准指南(1987 年版)中,for赋值=仅用于. 在其他任何地方都使用它来进行比较。SETUPDATE=

但在其他语言中,例如 C/C++/C#/Java,=可以用作赋值,但它也返回一个值。所以a = b意味着“设置a等于b,并返回a”,而a == b意味着“true如果ab相等则返回”。(这会导致 C 程序中的一个非常常见的错误,因为if (a = b)if (a == b)都是有效的,因为结果不必是布尔值。)

JavaScript/ECMAScript 等一些语言也引入===了第三种比较类型。在这些语言中,==意味着“转换为相同类型并进行比较”,而===意味着“true仅当它们是相同类型和相同值时才返回”。

于 2009-07-15T17:29:07.203 回答