Quelle est la raison pour laquelle certaines personnes de l'arrière-plan Oracle utilisent DECIMAL (31,0) pour les entiers. En MySQL ce n'est pas efficace.Raison d'utiliser DECIMAL (31,0)
Répondre
Oracle implémente le « integer » ANSI type de données comme synonyme de NUMBER (38)
Pour plus de détails, voir « Learn Oracle: Datatypes for SQL and PL/SQL, Numbers »
Cependant, le tableau suivant doit être utilisé comme correspondance entre les types de données Oracle et MySQL:
"Oracle® Database SQL Developer Supplementary Information for MySQL Migrations"
Oracle et MySQL> Types de données Comparée> Comparaison des types de données
La principale différence, comme expliqué here et here est que Oracle NUMBER format est le type de données de longueur variable tandis que MySQL DECIMAL (n) type de données utilisé pour être represented as strings that require one byte per digit or sign character
(avant la version 5.0.3)
(Oracle NUMBER Datatype) Format numérique interne
La base de données Oracle stocke les données numériques au format de longueur variable . Chaque valeur est stockée en notation scientifique, avec 1 octet utilisé pour stocker l'exposant et pour 20 octets pour stocker la mantisse. La valeur résultante est limitée à 38 chiffres de précision. Oracle Database ne stocke pas les zéros de début et de fin . Par exemple, le numéro 412 est stocké dans un format similaire à 4.12 x 102, avec 1 octet utilisé pour stocker l'exposant (2) et 2 octets utilisés pour stocker les trois chiffres significatifs de la mantisse (4,1 , 2). Les nombres négatifs incluent le signe dans leur longueur.
Compte tenu de cela, la colonne taille en octets pour une valeur de données numérique particulier NUMBER (p), où p est la précision d'une valeur donnée, peut être calculé selon la formule suivante:
ROUND((length(p)+s)/2))+1
où s est égal à zéro si le nombre est positif , et s est égal à 1 si le nombre est négatif.
zéro et positif et négatif infini (uniquement généré sur l'importation de base de données Oracle, version 5) sont stockées en utilisant des représentations uniques. L'infini zéro et négatif de nécessite 1 octet; L'infini positif nécessite 2 octets.
et
(MySQL) Type de données DECIMAL Changements
Les exigences de stockage pour le nombre entier et les fractions de chaque valeur sont déterminés séparément. Chaque multiple de neuf chiffres nécessite quatre octets, et tous les chiffres restants laissés nécessitent une fraction de quatre octets. [...]
Par exemple, un DECIMAL (18,9) colonne comporte neuf chiffres de part et d'autre du point décimal , de sorte que la partie entière et la partie fractionnaire exigent chacun quatre octets. Une colonne DECIMAL (20,6) a quatorze chiffres entiers et six chiffres fractionnaires. Les chiffres entiers requièrent quatre octets pour neuf des chiffres et trois octets pour les cinq chiffres restants. Les six chiffres fractionnaires nécessitent trois octets.
- 1. Python Decimal
- 2. C# sizeof decimal?
- 3. Force Decimal Regex
- 4. Conversion HEX & Decimal
- 5. DB2 Implied Decimal
- 6. Decimal to Bit (Binary)
- 7. C# decimal tostring format
- 8. Bash Multiplication Decimal à int
- 9. assemblé decimal à ascii assembly
- 10. Différence entre DECIMAL et NUMERIC
- 11. Decimal VS Int dans MySQL?
- 12. Division d'un 'Decimal' dans VB.NET
- 13. ASP.NET/C# Decimal à 0.00
- 14. Decimal to Binary, sortie étrange
- 15. Représentation binaire d'un .NET Decimal
- 16. Sous-classe Decimal en Python
- 17. convertir décimal? en primitive decimal
- 18. Utilisation de Decimal pour le cas suivant
- 19. Comment convertir les photos Decimal en T?
- 20. C# pourquoi mon DECIMAL est-il négatif?
- 21. Ajouter deux IQueryables (int/decimal) en C#
- 22. Raison pour SIGPIPE
- 23. Raccourcis CSS Raison d'être
- 24. 'NSInvalidArgumentException', raison: '- [__ NSArrayI leftCapWidth]
- 25. Unknown accident Raison
- 26. NSInvalidArgumentException raison keyboardWasHidden?
- 27. Comment convertir Int/Decimal pour flotter en C#?
- 28. Arrondir DECIMAL (14,3) au troisième chiffre décimal dans SQL 2008
- 29. Sql Server Decimal (30,10) perdant les 2 dernières décimales
- 30. Est-ce que system.Decimal utilise plus de mémoire que 'decimal'?