sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres datatyp cast

cast(varchar_col AS int)  -- SQL standard

eller

varchar_col::int          -- Postgres syntax shorthand

Dessa syntaxvarianter är giltiga (nästan) var som helst . Den andra kan kräva kapslingsparenteser i speciella situationer:

  • PostgreSQL:Skapa index över längden på alla tabellfält

Och den första kan krävas där endast funktionell notation tillåts av syntaxbegränsningar:

  • PostgreSQL - CAST vs ::operator på LATERAL tabellfunktion

Det finns ytterligare två varianter:

int4(varchar_col)         -- only works for some type names
int '123'                 -- must be an untyped, quoted string literal

Notera hur jag skrev int4 (varchar_col) . Det är det interna typnamnet och det finns också en funktion definierad för det. Skulle inte fungera som integer() eller int() .

Observera också att det sista formuläret inte fungerar för array typer. int[] '{1,2,3}' måste vara '{1,2,3}'::int[] eller cast('{1,2,3}' AS int[]) .

Detaljer i manualen här och här .

För att vara giltig för integer , måste strängen bestå av ett valfritt inledande tecken (+ /- ) följt av endast siffror. Inledande/efterföljande blanksteg ignoreras.




  1. Maximal storlek för en SQL Server-fråga? IN-klausul? Finns det ett bättre tillvägagångssätt

  2. Hur man visar den aktuella inställningen för nollutdata i PostgreSQL (psql)

  3. Unitils och DBMaintainer - hur får man dem att fungera med flera användare/scheman?

  4. SqlDataSourceEnumerator.Instance.GetDataSources() hittar inte lokal SQL-server 2008-instans