MYSQL中的单等号是什么意思?

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

9
嗨,我想知道为什么MYSQL在条件语句中使用单个等号而不是更典型的两个等号。这样做有技术/历史原因吗?谢谢。
比较在SQL中比赋值更常见。这就是为什么SQL使用更短的语法来完成更常见的事情。
在经典的SQL中,可以通过上下文将比较与赋值区分开来(赋值只能在UPDATE语句的SET子句中),因此一个运算符可以用于两个操作。
在MySQL对SQL的扩展中,会话变量的赋值由:=表示。

SQL并非从Ingres的QUEL演变而来。虽然QUEL在某些方面可能是更好的设计,但已被SQL所取代。 - lavinio

7

更类似于历史性的原因。

这是SQL。自70年代早期以来,它一直使用单个等号进行比较。


1
它是在70年代由IBM开发的。最初它被命名为结构化英语查询语言,因此旨在接近常规人类语言。 - Guffa

5

在SQL中,不应该存在任何模糊性。

在C.J.Date的原始版《SQL标准指南》(1987年版)中,只有在UPDATESET子句中,=才用于赋值。而在其他任何使用=的地方,它都是用于比较。

但在其他语言中,比如C/C++/C#/Java等,=被用作赋值运算符,同时也会返回一个值。因此,a = b 意味着“将a设置为b,并返回a”,而 a == b 则意味着“如果ab相等,则返回true”(这导致C程序中非常常见的一个错误,因为if (a = b)if (a == b)都是有效的,因为结果不必是bool类型)。

一些语言,如JavaScript/ECMAScript也引入了===作为第三种比较方式。在这些语言中,== 表示“转换成相同类型再比较”,而===表示“仅当它们是相同类型且具有相同值时才返回true”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接