PostgreSQL'de, -999.9
- 9999.9
numaralı imzalı değerleri saklamak istiyorum. Bunun için numeric(5.1)
kullanabilir miyim?Postgres veri türü NUMERIC deposu kayıtlı değerleri olabilir mi?
Ya da hangi türü kullanmalıyım?
PostgreSQL'de, -999.9
- 9999.9
numaralı imzalı değerleri saklamak istiyorum. Bunun için numeric(5.1)
kullanabilir miyim?Postgres veri türü NUMERIC deposu kayıtlı değerleri olabilir mi?
Ya da hangi türü kullanmalıyım?
arbitrary precision type numeric
kesinlikle 5 ve 1, just like @Simon commented ölçekli bir sözdizimi hatası olmadan kullanabilirsiniz. yerine tip değiştirici içinde nokta (.
) bir virgül (,
) kullanın:
SELECT numeric(5,1) '-999.9' AS nr_lower
, numeric(5,1) '9999.9' AS nr_upper;
nr_lower | nr_upper
----------+----------
-999.9 | 9999.9
eksi işareti ve dizede nokta değişmez anlamlı basamak (precision
) izin verilen üst sınır karşı sayılmaz.
Uzunluğu kısıtlamanız gerekmiyorsa, yalnızca numeric
kullanın. Numaranızı tam
CHECK (nr_column BETWEEN -999.9 AND 9999.9)
numeric
mağaza: Eğer minimum ve maksimum uygulamak gerekiyorsa
, bir check constraint ekleyin. Mutlak kesinliğe ihtiyacınız yoksa ve küçük yuvarlama hataları sorun değilse, double precision
(float8
) veya real
(float4
) kayan nokta türlerinden birini de kullanabilirsiniz.
Veya, yalnızca tek bir kesirli ondalık basamağa izin verdiğinden, 10 ile çarpabilir ve en verimli depolama alanı olan integer
'u kullanabilirsiniz: 4 bayt, yuvarlama hataları ve en hızlı işlem. Sadece numarayı doğru şekilde kullanın ve belgeleyin.
Teşekkürler @Erwin, harika cevap! –
bir Postgresql sayısal hassaslığı anlamlı basamak sayısı ve ölçek gerekli ondalık sayısıdır. 9999.9, 5 hane ve 1 ondalık basamağa sahiptir, bu nedenle, evet, sayısal (5.1) 'Tamam. Detaylar için [belgeler] (http://www.postgresql.org/docs/9.3/static/datatype-numeric.html#DATATYPE-NUMERIC-DECIMAL) konusuna bakın. –
, -999.9 için sayısal (5.1) tamam mı? –
Neden negatif bir değer eklemeyi deniyor ve neler olduğunu görmüyor musunuz? Neyse, sayısal 'sql standardının bir parçasıdır ve evet, imzalandı. –