2016-02-09 22 views
10

Java'da, int türünün tutabileceği en büyük sayıyı almak için Integer.MAX_VALUE söyleyebilirim.Postgres'te MAX_INT sabiti var mı?

Postgres'te benzer bir sabit/işlev var mı? Numarayı kodlamaktan kaçınmak istiyorum.

Düzenleme: neden soruyorum budur. Bir sırayla desteklenen, integer tipinde bir kimliğe sahip eski bir tablo var. Bu tabloya gelen birçok satır var. integer'un ne kadar süre dolduğunu hesaplamak istiyorum, bu yüzden "kaç tane kimlik kaldığını" bilmem gerekiyor "ne kadar hızlı harcıyoruz".

+0

Hayır böyle bir sabit yok Nerede olmalı? Veritabanında "Tamsayı" gibi önceden tanımlanmış "sınıflar" yoktur. İsterseniz, sadece 2147483647 –

+3

@a_horse_with_no_name döndüren bir işlev yazabilirsiniz. Peki, postgres dahil olmak üzere SQL'de çok sayıda önceden tanımlanmış ve büyü sabitleri vardır: Örneğin, CURRENT_TIMESTAMP. Bana bir 'MAX_INT'/'INT_MAX 'sahip olmak için hiçbir yerde görünmüyor. Ya da, bu konuda, bir C stili 'sizeof()' işlevi. – IMSoP

+2

SQL'deki bu önceden tanımlı fonksiyonların hiçbiri _implementation_ detaylarını göstermez. SQL, 'sizeof()' gibi düşük seviyeli bilgilerle uğraşmaz çünkü SQL'in amacı bunu bilmeniz gerektiğinden emin olmaktır. Bir _value_ boyutunu sorgulayabilirsiniz, ancak veri türü boyutu için sorgulama yapamazsınız. Asıl soru şu: Neden buna ihtiyacın var? Bununla çözmeye çalıştığınız temel sorun nedir? –

cevap

4

Bunun için bir sabit yok, ancak Postgres'te sayıyı Java'da olduğundan daha kodlamak daha mantıklı.

Java'da, felsefi hedef Integer için soyut bir değerdir, bu yüzden maksimum değerin ne olduğunu bilmiyormuş gibi davranmak isteyeceğiniz anlamına gelir.

Postgres'te, çıplak metale çok daha yakınsınız ve integer türünün tanımı, a 4-byte signed integer olmasıdır.

+0

Bir int'nin boyutu ayrıca Postgres'in yazıldığı C cinsinden de soyutlanır. – sudo

+0

A Postgres 'integer' bir C' ile aynı değildir int ' –

+0

Evet. Üzgünüm, Postgres’te soyutlandığını söylemek istemedim. Postgres, tamsayı limitlerini bağımsız olarak tanımlar. – sudo