7

MYSQL が、より一般的な 2 つの等号ではなく、条件ステートメントで 1 つの等号を使用する理由を知りたいと思っていました。これには技術的/歴史的な理由がありますか? ありがとう。

4

3 に答える 3

9

こんにちは、なぜ MYSQL が条件ステートメントでより一般的な 2 つの等号ではなく単一の等号を使用するのか疑問に思っていました。これには技術的/歴史的な理由がありますか? ありがとう。

SQL比較は代入よりもはるかに一般的です。

そのためSQL、より短い構文を使用して、より一般的なことを行います。

従来SQLの では、比較はコンテキストによって代入と区別できます (代入はステートメントSETの節でのみ可能ですUPDATE)。そのため、1 つの演算子を両方の操作に使用できます。

MySQLの への拡張ではSQL、セッション変数への代入は:=

于 2009-07-15T17:13:52.023 に答える
7

より歴史的なものに似ています。

SQLです。70 年代初頭から、比較のために単一の等号を使用しています。

于 2009-07-15T17:10:58.143 に答える
5

SQL にはあいまいさがありません。

オリジナルの A Guide to the SQL Standard by CJDate (1987 edition) では、=for 代入は のSET節でのみ使用されていUPDATEます。他のどこでも=使用され、比較のために使用されます。

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

JavaScript/ECMAScript などの一部の言語も===、3 番目のタイプの比較として導入されています。これらの言語では、==は「同じ型に変換して比較する」を意味し、「同じ型で同じ値の場合にのみ===返す」を意味します。true

于 2009-07-15T17:29:07.203 に答える