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