Domanda Cosa fa :: fare in PostgreSQL? [duplicare]


Questa domanda ha già una risposta qui:

ho visto :: in vari posti che riguardano il codice postgres che ho visto in rete. Per esempio:

SELECT '{apple,cherry apple, avocado}'::text[];

Sembra essere una specie di cast. Che cosa è esattamente :: in postgres e quando dovrebbe essere usato?

Ho provato un po 'su google e ho cercato i documenti Postgres per :: ma non ha ottenuto buoni risultati.
Ho provato a seguire le ricerche su Google:

  • postgres doppio colon
  • postgres ::
  • ::

Ho provato le seguenti ricerche nel pulsante di ricerca dei documenti postgres

  • doppio colon
  • doppio cast del colon
  • ::

Questo è stato quasi imbarazzante per chiedere su SO, ma ho pensato che Google spera di vedere questa risposta per altre persone in futuro.


46
2018-03-21 01:06


origine


risposte:


Un cast di tipi specifica una conversione da un tipo di dati all'altro.

PostgreSQL accetta due sintassi equivalenti per i cast di tipi, specifici per PostgreSQL value::type e lo standard SQL CAST(value AS type).

In questo caso specifico, '{apple,cherry apple, avocado}'::text[]; prende la stringa letterale {apple,cherry apple, avocado} e dice a PostgreSQL di interpretarlo come un matrice di text.

Vedi la documentazione su Espressioni SQL e array per dettagli.


45
2018-03-21 01:12



Cosa hanno scritto @PSR e @Craig.
Inoltre, ci sono altre due varianti di sintassi:

1. type value

Questo modulo lancia solo costanti (stringhe letterali). Come in:

SELECT date '2013-03-21';

Maggiori informazioni nel manuale nel capitolo Costanti di altri tipi.

2. type(value)

Questa è la sintassi simile alla funzione. Funziona solo per i tipi i cui nomi sono validi come nomi di funzioni. Come in:

SELECT date(date_as_text_col) FROM tbl;

Maggiori informazioni nel manuale nel capitolo Tipo di cast.


6
2018-03-21 01:57