cast(varchar_col AS int) -- SQL standard
o
varchar_col::int -- Postgres syntax shorthand
Estas variantes de sintaxis son válidas (casi) en cualquier lugar . El segundo puede requerir paréntesis anidados en situaciones especiales:
- PostgreSQL:crea un índice sobre la longitud de todos los campos de la tabla
Y el primero puede ser necesario cuando las restricciones sintácticas solo permiten la notación funcional:
- PostgreSQL:operador CAST vs ::en la función de tabla LATERAL
Hay dos variantes más:
int4(varchar_col) -- only works for some type names
int '123' -- must be an untyped, quoted string literal
Tenga en cuenta cómo escribí int4
(varchar_col)
. Ese es el nombre del tipo interno y también hay una función definida para él. No funcionaría como o integer()
.int()
Tenga en cuenta también que la última forma no funciona para array tipos tiene que ser int[] '{1,2,3}'
'{1,2,3}'::int[]
o cast('{1,2,3}' AS int[])
.
Detalles en el manual aquí y aquí .
Para ser válido para integer
, la cadena debe estar compuesta por un signo inicial opcional (+
/-
) seguido solo de dígitos. Se ignoran los espacios en blanco iniciales/posteriores.