Подтвердить что ты не робот

Что делает:: делать в PostgreSQL?

Я видел :: в разных местах, в которых используется код postgres, который я видел в сети. Например:

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

Кажется, это какой-то актерский состав. Что такое :: в postgres и когда его следует использовать?

Я пробовал немного поискового запроса и искал документы Postgres для ::, но не получил хороших результатов.
Я пробовал следующие поиски в Google:

  • postgres double colon
  • postgres::
  • ::

Я пробовал следующие поисковые запросы в кнопке поиска документов postgres

  • двойной двоеточие
  • двойное двоеточие
  • ::

Было почти неловко спрашивать об этом, но я решил, что Google, надеюсь, увидит этот ответ для других людей в будущем.

4b9b3361

Ответ 1

Приведение типа задает преобразование из одного типа данных в другой.

PostgreSQL принимает два эквивалентных синтаксиса для типов cast, специфичные для PostgreSQL value::type и SQL-стандарт CAST(value AS type).

В этом конкретном случае '{apple,cherry apple, avocado}'::text[]; принимает строковый литерал {apple,cherry apple, avocado} и сообщает PostgreSQL интерпретировать его как массив text.

Подробнее см. документацию выражений SQL и arrays.

Ответ 2

Что пишут @PSR и @Craig.
Кроме того, есть еще два варианта синтаксиса:

1. type value

Эта форма только создает константы (строковые литералы). Как в:

SELECT date '2013-03-21';

Подробнее в руководстве в главе Константы других типов.

2. type(value)

Это функционально-подобный синтаксис. Работает только для типов, имена которых действительны как имена функций. Как в:

SELECT date(date_as_text_col) FROM tbl;

Подробнее в руководстве в главе Тип Cast.