: 在 PostgreSQL 中做什么?

我在各种地方见过 ::,包括我在网上看到的邮政编码。例如:

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

这看起来像是某种类型的铸造。什么是 ::确切地在邮寄和什么时候应该使用它?

我试着用谷歌搜索了一下 Postgres 的文档寻找 ::,但是没有得到好的结果。
我试着在谷歌上搜索以下内容:

  • Postgres 双重冒号
  • Postgres: :
  • ::

我在 postgres docs 搜索按钮中尝试了以下搜索

  • 双结肠
  • 双结肠石膏
  • ::

在 SO 上问这个问题几乎有些尴尬,但是我认为谷歌将来有希望为其他人看到这个问题的答案。

54420 次浏览

A type cast specifies a conversion from one data type to another.

PostgreSQL accepts two equivalent syntaxes for type casts, the PostgreSQL-specific value::type and the SQL-standard CAST(value AS type).

In this specific case, '{apple,cherry apple, avocado}'::text[]; takes the string literal {apple,cherry apple, avocado} and tells PostgreSQL to interpret it as an array of text.

See the documentation on SQL expressions and arrays for details.

What @PSR and @Craig wrote.
Plus, there are two more syntax variants:

1. type value

This form only casts constants (string literals). Like in:

SELECT date '2013-03-21';

More in the manual in the chapter Constants of Other Types.

2. type(value)

That's the function-like syntax. Works only for types whose names are valid as function names. Like in:

SELECT date(date_as_text_col) FROM tbl;

More in the manual in the chapter Type Casts.

More comprehensive answer: