我在想为什么MYSQL在条件语句中使用单等号而不是更典型的双等号。这是有技术/历史原因吗?谢谢。
更类似于历史性的原因。
这是SQL。自70年代早期以来,它一直使用单个等号进行比较。
在SQL中,不应该存在任何模糊性。
在C.J.Date的原始版《SQL标准指南》(1987年版)中,只有在UPDATE
的SET
子句中,=
才用于赋值。而在其他任何使用=
的地方,它都是用于比较。
但在其他语言中,比如C/C++/C#/Java等,=
被用作赋值运算符,同时也会返回一个值。因此,a = b
意味着“将a
设置为b
,并返回a
”,而 a == b
则意味着“如果a
和b
相等,则返回true
”(这导致C程序中非常常见的一个错误,因为if (a = b)
和if (a == b)
都是有效的,因为结果不必是bool类型)。
一些语言,如JavaScript/ECMAScript也引入了===
作为第三种比较方式。在这些语言中,==
表示“转换成相同类型再比较”,而===
表示“仅当它们是相同类型且具有相同值时才返回true
”。