cast(varchar_col AS int) -- SQL standard
nebo
varchar_col::int -- Postgres syntax shorthand
Tyto varianty syntaxe jsou platné (téměř) kdekoli . Druhý může ve zvláštních situacích vyžadovat vnoření závorek:
- PostgreSQL:Vytvořte index podle délky všech polí tabulky
A první může být vyžadován tam, kde omezení syntaxe povoluje pouze funkční zápis:
- PostgreSQL – operátor CAST vs ::na tabulkové funkci LATERAL
Existují další dvě varianty:
int4(varchar_col) -- only works for some type names
int '123' -- must be an untyped, quoted string literal
Všimněte si, jak jsem napsal int4
(varchar_col)
. To je interní název typu a je pro něj také definována funkce. Nefungovalo by jako nebo integer()
.int()
Všimněte si také, že poslední formulář nefunguje pro pole typy. musí být int[] '{1,2,3}'
'{1,2,3}'::int[]
nebo cast('{1,2,3}' AS int[])
.
Podrobnosti v návodu zde a zde .
Platí pro integer
, řetězec se musí skládat z volitelného znaku na začátku (+
/-
) následované pouze číslicemi. Úvodní/koncové prázdné místo je ignorováno.