2016-02-09 16 views
10

In Java posso dire Integer.MAX_VALUE per ottenere il numero più grande che può contenere il tipo int.Esiste una costante MAX_INT in Postgres?

Esiste una costante/funzione simile in Postgres? Mi piacerebbe evitare di codificare il numero.

Modifica: il motivo per cui lo sto chiedendo è questo. C'è una tabella legacy con un ID di tipo integer, supportato da una sequenza. C'è un sacco di righe in arrivo in questa tabella. Voglio calcolare quanto tempo prima che scada lo integer, quindi ho bisogno di sapere "quanti ID sono rimasti" divisi per "quanto velocemente li stiamo spendendo".

+0

No, non esiste una tale costante Dove dovrebbe essere? Non ci sono "classi" predefinite come "Intero" in un database. Se vuoi puoi scrivere una funzione che restituisce semplicemente 2147483647 –

+3

@a_horse_with_no_name Beh, ci sono un sacco di costanti predefinite e magiche in SQL, tra cui postgres: 'CURRENT_TIMESTAMP', per esempio. Non mi sembra affatto fuori luogo avere un 'MAX_INT' /' INT_MAX'. O, del resto, una funzione 'sizeof()' in stile C. – IMSoP

+2

Nessuna di quelle funzioni predefinite in SQL mostra dettagli _implementation_. SQL non ha realmente a che fare con informazioni di basso livello come 'sizeof()' perché l'obiettivo di SQL è quello di liberarti dall'esigenza di saperlo. È possibile eseguire una query per la dimensione di un valore _, ma non per la dimensione del tipo di dati. La vera domanda è: perché pensi di averne bisogno? Qual è il problema di base che stai cercando di risolvere con quello? –

risposta

4

Non c'è una costante per questo, ma penso che sia più ragionevole codificare il numero in Postgres che in Java.

In Java, l'obiettivo filosofico è che Integer sia un valore astratto, quindi è logico che si desideri comportarsi come se non si conoscesse il valore massimo.

In Postgres, sei molto più vicino al metallo nudo e la definizione del tipo integer è che è a 4-byte signed integer.

+0

La dimensione di un int è anche astratta in C, in cui Postgres è scritto. – sudo

+0

Un 'intero Postgres 'non è lo stesso di un C' int' –

+0

Sì. Scusate, non volevo dire che è astratto in Postgres. Postgres definisce i loro limiti interi in modo indipendente. – sudo

Problemi correlati