Un seul Égale à MYSQL
-
16-09-2019 - |
Question
Je me demandais pourquoi MYSQL utilise un seul signe égal dans les instructions conditionnelles au lieu des plus typiques deux signes égal. Y at-il une raison technique / historique pour cela? Merci.
La solution
Salut, je me demandais pourquoi MYSQL utilise un seul signe égal dans les instructions conditionnelles au lieu des plus typiques deux signes égal. Y at-il une raison technique / historique pour cela? Merci.
La comparaison est beaucoup plus courante dans SQL
que l'affectation.
C'est pourquoi SQL
utilise une syntaxe plus courte pour faire des choses plus courantes.
Dans SQL
classique, la comparaison peut être distinguée de la cession par le contexte (affectation ne peut être que la clause de SET
d'une instruction UPDATE
), c'est la raison pour laquelle un opérateur peut être utilisé pour les deux opérations.
Dans le prolongement de MySQL
à SQL
, affectation à une variable de session est notée par :=
Autres conseils
Plus historique.
Il est SQL. Il a utilisé un seul signe égal pour la comparaison depuis les début des années 70.
Il n'y a jamais un cas d'ambiguïté dans SQL.
Dans l'original Guide de la norme SQL par C.J.Date (édition 1987), =
pour l'affectation n'est utilisé dans la clause SET
de UPDATE
. Partout ailleurs =
est utilisé, il est utilisé pour la comparaison.
Mais dans d'autres langues, comme C / C ++ / C # / Java, =
peut être utilisé comme cession, mais il renvoie également une valeur. Donc a = b
signifie « définir a
égal à b
, et le retour a
», alors que a == b
signifie « retour true
si a
et b
sont égaux ». (Cela conduit à un bug très commun dans les programmes C, parce que if (a = b)
et if (a == b)
sont valides, car le résultat ne doit pas être un bool.)
Certaines langues comme JavaScript / ECMAScript introduisent également ===
comme troisième type de comparaison. Dans ces langues, ==
signifie « convertir en même type et comparer », alors que ===
signifie « retour true
que si elles sont du même type et même valeur. »