我想知道为什么 MYSQL 在条件语句中使用单个等号而不是更典型的两个等号。这有技术/历史原因吗?谢谢。
3 回答
嗨,我想知道为什么 MYSQL 在条件语句中使用单个等号而不是更典型的两个等号。这有技术/历史原因吗?谢谢。
比较SQL比分配更常见。
这就是为什么SQL使用更短的语法来做更常见的事情的原因。
在经典SQL中,比较可以通过上下文与赋值区分开来(赋值只能在SET语句的子句中UPDATE),这就是为什么一个运算符可以用于两种操作的原因。
在MySQL的扩展中SQL,对会话变量的赋值表示为:=
更像历史。
是 SQL。自 70 年代初以来,它就使用单个等号进行比较。
SQL 中从不存在歧义。
在CJDate 的原始 SQL 标准指南(1987 年版)中,for赋值=仅用于. 在其他任何地方都使用它来进行比较。SETUPDATE=
但在其他语言中,例如 C/C++/C#/Java,=可以用作赋值,但它也返回一个值。所以a = b意味着“设置a等于b,并返回a”,而a == b意味着“true如果a和b相等则返回”。(这会导致 C 程序中的一个非常常见的错误,因为if (a = b)和if (a == b)都是有效的,因为结果不必是布尔值。)
JavaScript/ECMAScript 等一些语言也引入===了第三种比较类型。在这些语言中,==意味着“转换为相同类型并进行比较”,而===意味着“true仅当它们是相同类型和相同值时才返回”。