Pourquoi la sortie est-elle différente dans SQL Server et même dans Oracle?

Pourquoi la sortie de deux requêtes est-elle différente dans SQL Server et dans Oracle?

SELECT 20.0/-2.0/5 SELECT 20/(-2.0)/5 

Je ne suis pas d'accord avec votre affirmation que la production devrait être la même.
Si vous me requestz ce que 20 / -2 / 5 beaucoup de sortie, je vais vous répondre qu'il pourrait sortir -2 ou -50, dépend des détails de mise en œuvre.

Dans Oracle , la seule chose que vous savez est que les opérateurs '*' et '/' sont évalués avant '+' et '-'. Mais c'est tout. Je ne trouve aucune documentation sur la priorité donne à l'opérateur '*' et '/' entre eux.
Étant donné que la requête deux donne -2, vous pouvez supposer que les parenthèses restnt, et le calcul est effectué de gauche à droite.

Dans SQL Server, les documents spécifiaient que

Lorsque deux opérateurs dans une expression ont le même niveau de priorité d'opérateur, ils sont évalués de gauche à droite en fonction de leur position dans l'expression.

Donc ce calcul est conforme aux spécifications:

 20/2/5 = (20/2)/5 = 2 

Maintenant, ajoutez le signe less

 20/-2/5 = 20/(-2/5) = -50 

Ajouter à nouveau des parenthèses

 20/(-2)/5 = (20/-2)/5 = -2 

Ainsi, non seulement la parenthèse change l'ordre, mais le signe less aussi.

En fait, le résultat devrait être considéré comme non défini, et vous ne pouvez pas countr dessus.
Ajoutez des parenthèses pour avoir un résultat bien défini et éviter les maux de tête.