¿Cuál es el motivo por el que algunas personas de origen Oracle están utilizando DECIMAL (31,0) para enteros? En MySQL no es eficiente.Motivo de uso DECIMAL (31,0)
Respuesta
Oracle implementa el "INTEGER" tipo de datos ANSI como sinónimo de NÚMERO (38)
Para más detalles ver "Learn Oracle: Datatypes for SQL and PL/SQL, Numbers"
Sin embargo, la siguiente tabla se debe utilizar como un mapeo entre tipo de datos en Oracle y MySQL:
"Oracle® Database SQL Developer Supplementary Information for MySQL Migrations"
Oracle y MySQL comparación> Tipos de datos> comparación de tipos de datos
La principal diferencia, como se explica here y here es que el número Oracle tipo de datos es el formato de longitud variable, mientras que MySQL DECIMAL (n) de tipo de datos que solía ser represented as strings that require one byte per digit or sign character
(antes de la versión 5.0.3)
(Oracle NUMBER tipo de datos) Formato numérico interno
Oracle Database almacena datos numéricos en formato de longitud variable. Cada valor es almacenado en notación científica, con 1 bytes usados para almacenar el exponente y hasta a 20 bytes para almacenar la mantisa. El valor resultante está limitado a 38 dígitos de precisión. Oracle Database no almacena los ceros iniciales y finales. Por ejemplo, el número 412 es almacenado en un formato similar a 4.12 x 102, con 1 byte utilizado para almacenar el exponente (2) y 2 bytes utilizados para almacenar los tres dígitos significativos de la mantisa (4,1 , 2). Los números negativos incluyen el signo en su longitud.
Teniendo esto en cuenta, el tamaño de columna en bytes para un número particular numérico valor de datos (p), donde p es la precisión de un valor dado, puede ser calculado utilizando el fórmula siguiente:
ROUND((length(p)+s)/2))+1
donde s es igual a cero si el número es positivo , y s es igual a 1 si el número es negativo .
Zero y positivo y negativo infinito (sólo generada en la importación de base de datos Oracle, Versión 5) son almacenado utilizando representaciones únicas. Cero y negativo infinito cada requieren 1 byte; infinito positivo requiere 2 bytes.
y
(MySQL) DECIMAL Tipo de datos Cambios requisitos
El almacenamiento para el número entero y partes fraccionarias de cada valor se determinan por separado. Cada múltiplo de nueve dígitos requiere cuatro bytes, y los dígitos restantes que quedan requieren una fracción de cuatro bytes. [...]
Por ejemplo, un DECIMAL (18,9) columna tiene nueve dígitos en cada lado del punto decimal , por lo que la parte entera y la parte fraccionaria cada requieren cuatro bytes. Una columna DECIMAL (20,6) tiene catorce dígitos enteros y seis dígitos fraccionarios. Los dígitos enteros requieren cuatro bytes para nueve de los dígitos y tres bytes para los restantes cinco dígitos. Los seis dígitos fraccionarios requieren tres bytes.
- 1. Motivo detrás del uso de 'instanceof function() {}'?
- 2. ¿Cuál es el uso de DECIMAL (x, 0)?
- 3. Motivo de globals() en Python?
- 4. Determine el motivo de System.AccessViolationException
- 5. Motivo de saltarse el AOT?
- 6. Diferencia entre decimal y decimal
- 7. Cuál es el motivo de "contexto de transacción en uso por otra sesión"
- 8. Motivo de los archivos de datos monolíticos
- 9. ¿Lanzar objeto a decimal? (Decimal anulable)
- 10. Punto decimal o coma decimal en Android
- 11. ¿Cómo puedo convertir el decimal? a decimal
- 12. Motivo de OOP poco común en Python?
- 13. Motivo para usar versiones anteriores de jQuery?
- 14. ¿Cuál es el motivo de UnsupportedClassVersionError?
- 15. ¿El motivo de MonadState obtener y poner?
- 16. Descubriendo el motivo de la falla File.mkdirs()
- 17. "Por dinero, siempre decimal"?
- 18. Python Decimal
- 19. precisión decimal de flotadores
- 20. problemas de redondeo decimal
- 21. redondeo decimal de Python
- 22. Clase decimal Java liviana
- 23. decimal vs velocidad doble
- 24. para comparar el doble y el decimal ¿Debería convertir doble a decimal o decimal a doble?
- 25. ¿Qué es un buen mapeo de .NET decimal a SQL Server decimal?
- 26. Errores en Eclipse sin ningún motivo
- 27. ¿Cómo saber el motivo del desenfoque?
- 28. Motivo para usar size_t uint32 uint64 etc.
- 29. Detectar el motivo para cerrar el formulario
- 30. File.mkdir o mkdirs return false - ¿Motivo?