Ik heb ::
gezien op verschillende plaatsen met postgres-code die ik op het net heb gezien. Bijvoorbeeld:
SELECT '{apple,cherry apple, avocado}'::text[];
Het lijkt een soort cast te zijn. Wat is ::
precies in postgres en wanneer moet het worden gebruikt?
Ik heb wat gegoogled en in de documenten van Postgres gezocht naar ::
maar kreeg geen goede resultaten.
Ik heb de volgende zoekopdrachten in Google geprobeerd:
- postgres dubbele dubbele punt
- postgres ::
- ::
Ik heb de volgende zoekopdrachten geprobeerd met de zoekknop van postgres docs
- dubbele dubbele punt
- dubbele dubbele punt cast
- ::
Dit was bijna gênant om te vragen op SO, maar ik dacht dat Google dit antwoord hopelijk in de toekomst voor andere mensen zal zien.
Antwoord 1, autoriteit 100%
Een typecast specificeert een conversie van het ene gegevenstype naar het andere.
PostgreSQL accepteert twee equivalente syntaxis voor typecasts, de PostgreSQL-specifieke value::type
en de SQL-standaard CAST(value AS type)
.
In dit specifieke geval neemt '{apple,cherry apple, avocado}'::text[];
de tekenreeks letterlijk {apple,cherry apple, avocado}
en vertelt PostgreSQL om het te interpreteren als een array van text
.
Zie de documentatie over SQL-expressiesen arraysvoor details.
Antwoord 2, autoriteit 10%
Wat @PSR en @Craig schreven.
Bovendien zijn er nog twee syntaxisvarianten:
1. type value
Dit formulier werpt alleen constanten (letterlijke tekenreeksen). Vind ik leuk in:
SELECT date '2013-03-21';
Meer in de handleiding in het hoofdstuk Constanten van andere typen.
2. type(value)
Dat is de functie-achtige syntaxis. Werkt alleen voor typen waarvan de namen geldig zijn als functienamen. Vind ik leuk in:
SELECT date(date_as_text_col) FROM tbl;
Meer in de handleiding in het hoofdstuk Typecasts.
Uitgebreider antwoord: