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.