Одиночные Равные в MYSQL - PullRequest
       16

Одиночные Равные в MYSQL

7 голосов
/ 15 июля 2009

Мне было интересно, почему MYSQL использует один знак равенства в условных выражениях вместо более типичных двух знаков равенства. Есть ли техническая / историческая причина для этого? Спасибо.

Ответы [ 3 ]

9 голосов
/ 15 июля 2009

Привет, мне было интересно, почему MYSQL использует один знак равенства в условных выражениях вместо более типичных двух знаков равенства. Есть ли техническая / историческая причина для этого? Благодаря.

Сравнение гораздо чаще встречается в SQL, чем задание.

Именно поэтому SQL использует более короткий синтаксис для выполнения более общих задач.

В классическом SQL сравнение можно отличить от присваивания по контексту (присваивание может быть только в предложении SET оператора UPDATE), поэтому для обеих операций можно использовать один оператор.

В расширении MySQL до SQL присвоение переменной сеанса обозначается :=

7 голосов
/ 15 июля 2009

Больше похоже на историческое.

Это SQL. С начала 70-х годов для сравнения использовался один знак равенства.

5 голосов
/ 15 июля 2009

В SQL не может быть неоднозначности.

В оригинальном Руководстве по стандарту SQL , составленном C.J.Date (издание 1987 г.), = для присвоения используется только в предложении 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, только если они имеют одинаковый тип и одинаковое значение».

...