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