93 votes

Que fait : : dans PostgreSQL ?

J'ai vu :: dans divers endroits impliquant du code postgres que j'ai vu sur le net. Par exemple :

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

Il semble qu'il s'agisse d'une sorte de moulage. Qu'est-ce qui est exactement :: dans postgres et quand faut-il l'utiliser ?

J'ai essayé de faire un peu de recherche sur Google et j'ai cherché dans les documents de Postgres pour :: mais n'a pas obtenu de bons résultats.
J'ai essayé les recherches suivantes dans Google :

  • double-colonne postgres
  • postgres : :
  • : :

J'ai essayé les recherches suivantes dans le bouton de recherche des docs postgres

  • double-colonne
  • double colon coulé
  • : :

C'était presque embarrassant de poser la question sur SO, mais je me suis dit que Google verrait, je l'espère, cette réponse pour d'autres personnes à l'avenir.

97voto

PSR Points 14768

Un cast de type spécifie une conversion d'un type de données à un autre.

PostgreSQL accepte deux syntaxes équivalentes pour les transferts de type, la syntaxe spécifique à PostgreSQL value::type et la norme SQL CAST(value AS type) .

Dans ce cas précis, '{apple,cherry apple, avocado}'::text[]; prend la chaîne littérale {apple,cherry apple, avocado} et indique à PostgreSQL de l'interpréter comme un de text .

Voir la documentation sur Expressions SQL y tableaux pour les détails.

10voto

Erwin Brandstetter Points 110228

Ce que @PSR et @Craig ont écrit .
De plus, il y a deux autres variantes de syntaxe :

1. type value

Cette forme ne remplace que les constantes (chaînes littérales). Comme dans :

SELECT date '2013-03-21';

Plus d'informations dans le manuel au chapitre Constantes d'autres types .

2. type(value)

C'est la syntaxe de type fonction. Elle ne fonctionne que pour les types dont les noms sont valables comme noms de fonctions. Comme dans :

SELECT date(date_as_text_col) FROM tbl;

Plus d'informations dans le manuel au chapitre Type Casts .

Réponse plus complète :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X