Différence entre DECIMAL et NUMERIC

Quelle est la différence entre le type de données SQL NUMERIC et DECIMAL ? Si les bases de données les traitent différemment, j’aimerais savoir pour au moins:

  • serveur SQL
  • Oracle
  • Db / 2
  • MySQL
  • PostgreSQL

En outre, existe-t-il des différences dans la façon dont les pilotes de firebase database interprètent ces types?

Ils sont les mêmes pour presque tous les buts.

A un moment, différents fournisseurs utilisaient des noms différents (Numeric / Decimal) pour presque la même chose. SQL-92 les a rendus identiques avec une différence mineure qui peut être spécifique au fournisseur:

NUMERIC doit être exactement aussi précis que défini – par conséquent, si vous définissez 4 décimales, le DB doit toujours stocker 4 décimales.

DECIMAL doit être au moins aussi précis que défini. Cela signifie que la firebase database peut effectivement stocker plus de chiffres que spécifié (en raison de l’espace de stockage en coulisse pouvant contenir des chiffres supplémentaires). Cela signifie que la firebase database peut stocker 1.00005 au lieu de 1.0000 , ce qui affecte les calculs futurs.

Dans SQL Server, Numeric est défini comme étant identique à Decimal à tous les égards – les deux stockeront toujours uniquement le nombre spécifié de décimales.

Ce sont des synonymes, pas de différence du tout.

Au moins sur SQL Server dans les normes SQL ANSI. Cette réponse SO montre une certaine différence dans ANSI mais je soupçonne que dans la mise en œuvre, ils sont les mêmes

Postgres: pas de différence

dans la description de la documentation dans le tableau 8.1 semble identique, mais il n’est pas expliqué pourquoi il est mentionné séparément, donc selon Tom Lane post

Il n’y a pas de différence, à Postgres. Il existe deux noms de type car le standard SQL nous oblige à accepter les deux noms. Dans un rapide aperçu de la norme, il semble que la seule différence est la suivante:

  17)NUMERIC specifies the data type exact numeric, with the decimal precision and scale specified by the  and . 18)DECIMAL specifies the data type exact numeric, with the decimal scale specified by the  and the implementation-defined decimal precision equal to or greater than the value of the specified . 

c’est-à-dire que pour DECIMAL, l’implémentation est autorisée à autoriser plus de chiffres que requirejs à gauche du point décimal. Postgres n’exerce pas cette liberté donc il n’y a pas de différence entre ces types pour nous.

  regards, tom lane 

aussi une page inférieure docs état clairement, que

Les types décimal et numérique sont équivalents. Les deux types font partie du standard SQL.

et aussi aux alias la table decimal [ (p, s) ] est mentionnée comme alias pour numeric [ (p, s) ]