Что делает: делать в PostgreSQL? [дубликат]


этот вопрос уже есть ответ здесь:

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

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

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

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

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

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

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

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

2   51   2013-03-21 05:06:58

2 ответа:

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

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

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

смотрите документацию по выражения SQL и массивы для подробности.

что написали @PSR и @Craig.
Плюс, есть еще два варианта синтаксис:

1. type value

эта форма только приводит константы (строковые литералы). Например:

SELECT date '2013-03-21';

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

2. type(value)

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

SELECT date(date_as_text_col) FROM tbl;

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