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.

Était-ce utile?

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. »

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top