sql >> Base de Datos >  >> RDS >> PostgreSQL

Reparto de tipos de datos de Postgres

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 integer() o int() .

Tenga en cuenta también que la última forma no funciona para array tipos int[] '{1,2,3}' tiene que ser '{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.