2011-01-10 19 views

Respuesta

12

Ver PostgreSQL datatypes - quizá Numeric, que puede actuar como un tipo de precisión arbitraria (esto es una extensión PostgreSQL).

... sin ninguna precisión o escala crea una columna en la que los valores numéricos de cualquier precisión y la escala se pueden almacenar, hasta el límite de aplicación en la precisión.

no estoy del todo seguro de lo "límite de aplicación en la precisión es", sin embargo. Nunca he intentado realmente números grandes. Si se alcanza el límite, entonces es posible una devolución a text. Pero, sospecho que habrá otros problemas importantes antes de entonces ;-) Si desea almacenar menos, especifique una precisión y/o escala en numeric.

Editar como sjr señalado, la restricción es 1000 dígitos decimales de precisión (desde el mismo enlace):

El tipo numérico puede almacenar números con hasta 1000 dígitos de precisión [en implementaciones currentl] y realizar cálculos exactamente. Se recomienda especialmente para el almacenamiento de cantidades monetarias y otras cantidades que se requiere exactitud ...

Si se necesita más precisión - a pesar de tener un problema mucho mayor a la mano - a continuación, una columna numérica no será adecuado (por sí mismo). Pero esto es realmente más un extreme "¿y si?" Y probablemente no juegue un papel limitante.

+0

Tiene toda la razón, mi mal :) – sjr

+1

Edité su publicación en la versión más reciente de los documentos. 8.2 parece un poco desactualizado;) – DrColossos

+0

@DrColossos Muy apreciado. –

4

Simplemente use las asignaciones de Java para los tipos de datos SQL comunes. En este caso, puede usar un NUMERIC o DECIMAL.

+0

Esto funciona en PostgreSQL debido al soporte especial. Sin embargo, el SQL en sí mismo no define un tipo numérico de precisión arbitraria. En SQL Server, la precisión máxima es de 38 dígitos. (Afortunadamente, el valor de BigDecimal está garantizado en ese rango :-) –

+0

La pregunta es sobre PostgreSQL, no sobre SQL Server. NUMERIC y DECIMAL no tienen límites en PostgreSQL: http://www.postgresql.org/docs/current/static/datatype-numeric.html –

+0

Incluso PostgreSQL, de acuerdo con la documentación, tiene un límite superior de 1000 dígitos de precisión. Nunca tuve que usar números cerca de este tamaño así que no puedo comentar lo contrario. (El BigDecimal de Java tiene un * mucho * límite más grande.) El punto es que el espacio de numérico es * más pequeño * y aunque no conozco ningún motivo práctico para excederlo, el hecho no debería dejarse sin mencionar. –

Cuestiones relacionadas