2009-07-15 9 views
5

MYSQLがより典型的な2つの等号の代わりに条件文で1つの等号を使用するのはなぜでしょうか。このための技術的/歴史的な理由はありますか?ありがとう。MYSQLの等しいです

答えて

7

こんにちは、私は、より典型的な2つの等号の代わりに、条件文でMYSQLが単一の等号を使用するのはなぜだろうかと思いました。このための技術的/歴史的な理由はありますか?ありがとう。

SQLでは、割り当てがより一般的です。

だからこそ、SQLは、より一般的なことを行うために短い構文を使用しています。古典SQL

、比較は、一人のオペレータが両方の操作に使用することができる理由だと、(割り当てのみUPDATEステートメントのSET句であることができる)コンテキストによって割り当てと区別することができます。 SQLMySQLの延長で

、セッション変数への代入は、SQLでの曖昧さのためのケースは決してありません:=

+0

SQLはIngresのQUELから進化しませんでした。 QUELは、おそらく何らかの点で優れた設計であったにもかかわらず、SQLに取って代わりました。 – lavinio

+0

@lavinio:正しい、その部分を削除しました。 – Quassnoi

7

もっと歴史に似ています。

これはSQLです。 70年代初め以来、比較のために単一の等号を使用しています。

+0

ソースの考えですか? – Anon

+0

これは70年代にIBMによって開発されました。もともとStructured English Query Languageという名前だったので、通常の人間言語に近いことを意図しています。 – Guffa

5

で表されます。 C.J.Date(1987版)、割り当てのため=によってSQL標準元のAガイドで

のみUPDATESET句で使用されています。それ以外の場合は=が使用され、比較のために使用されます。

しかし、C/C++/C#/ Javaなどの他の言語では、=を代入として使用できますが、値も返します。したがって、a = bは、「と等しく、そしてaを返す」という意味を意味し、一方、a == bは、「true」と「abが等しい場合に返す」を意味します。 (if (a = b)if (a == b)が両方とも有効であるため、結果がブール値である必要はありませんので、これは、Cプログラムでは非常に一般的なバグにつながる。)

のJavaScript/ECMAScriptのようないくつかの言語はまた、第三のタイプとして===を紹介比較の。これらの言語では、==は「同じ型に変換して比較する」ことを意味しますが、===は「同じ型と同じ値である場合にのみtrueを返します」という意味です。

関連する問題