PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Cast del tipo di dati Postgres

cast(varchar_col AS int)  -- SQL standard

o

varchar_col::int          -- Postgres syntax shorthand

Queste varianti di sintassi sono valide (quasi) ovunque . Il secondo può richiedere parentesi di annidamento in situazioni speciali:

  • PostgreSQL:crea un indice sulla lunghezza di tutti i campi della tabella

E il primo potrebbe essere richiesto dove solo la notazione funzionale è consentita dalle restrizioni della sintassi:

  • PostgreSQL - Operatore CAST vs ::sulla funzione tabella LATERALE

Ci sono altre due varianti:

int4(varchar_col)         -- only works for some type names
int '123'                 -- must be an untyped, quoted string literal

Nota come ho scritto int4 (varchar_col) . Questo è il nome del tipo interno e c'è anche una funzione definita per esso. Non funzionerebbe come integer() o int() .

Nota anche che l'ultimo modulo non funziona per array tipi. int[] '{1,2,3}' deve essere '{1,2,3}'::int[] o cast('{1,2,3}' AS int[]) .

Dettagli nel manuale qui e qui .

Per essere valido per integer , la stringa deve essere composta da un segno iniziale facoltativo (+ /- ) seguito solo da cifre. Lo spazio bianco iniziale/finale viene ignorato.