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 o integer()
.int()
Nota anche che l'ultimo modulo non funziona per array tipi. deve essere int[] '{1,2,3}'
'{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.