92

::在网上看到过很多涉及 postgres 代码的地方。例如:

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

这似乎是某种演员。postgres 中到底有什么,什么::时候应该使用它?

我尝试了一些谷歌搜索并搜索了 Postgres 文档,::但没有得到好的结果。
我尝试在 Google 中进行以下搜索:

  • postgres 双冒号
  • postgres ::
  • ::

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

  • 双冒号
  • 双结肠管型
  • ::

在 SO 上问这个问题几乎令人尴尬,但我认为 Google 将来有望为其他人看到这个答案。

4

2 回答 2

94

类型转换指定从一种数据类型到另一种数据类型的转换。

PostgreSQL 接受两种等效的类型转换语法,即 PostgreSQL-specificvalue::type和 SQL-standard CAST(value AS type)

在这种特定情况下,'{apple,cherry apple, avocado}'::text[];获取字符串文字{apple,cherry apple, avocado}并告诉 PostgreSQL 将其解释text.

有关详细信息,请参阅有关SQL 表达式数组的文档。

于 2013-03-21T01:12:33.297 回答
9

@PSR 和 @Craig 写了什么
另外,还有两种语法变体

1.type value

这种形式只转换常量(字符串文字)。像:

SELECT date '2013-03-21';

更多在手册中的其他类型的常量一章中。

2.type(value)

这就是类似函数的语法。仅适用于名称作为函数名称有效的类型。像:

SELECT date(date_as_text_col) FROM tbl;

更多内容请参见Type Casts一章的手册。

更全面的答案:

于 2013-03-21T01:57:29.010 回答