MYSQL中的单一等于

时间:2009-07-15 17:08:50

标签: sql mysql conditional equals

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

3 个答案:

答案 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则返回ab相等“。 (这导致了C程序中一个非常常见的错误,因为if (a = b)if (a == b)都是有效的,因为结果不一定是bool。)

JavaScript / ECMAScript等一些语言也引入===作为第三种比较。在这些语言中,==表示“转换为相同类型并进行比较”,而===表示“只有当它们属于同一类型和相同值时才返回true。”