Что делает:: делать в PostgreSQL?
Я видел ::
в разных местах, в которых используется код postgres, который я видел в сети. Например:
SELECT '{apple,cherry apple, avocado}'::text[];
Кажется, это какой-то актерский состав. Что такое ::
в postgres и когда его следует использовать?
Я пробовал немного поискового запроса и искал документы Postgres для ::
, но не получил хороших результатов.
Я пробовал следующие поиски в Google:
- postgres double colon
- postgres::
- ::
Я пробовал следующие поисковые запросы в кнопке поиска документов postgres
- двойной двоеточие
- двойное двоеточие
- ::
Было почти неловко спрашивать об этом, но я решил, что Google, надеюсь, увидит этот ответ для других людей в будущем.
Ответы
Ответ 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.