::在PostgreSQL中做什么?

::在PostgreSQL中做什么?,postgresql,syntax,types,casting,typecast-operator,Postgresql,Syntax,Types,Casting,Typecast Operator,我在网上看到过很多涉及postgres代码的地方。例如: SELECT '{apple,cherry apple, avocado}'::text[]; 这似乎是某种演员阵容。什么是postgres中的:,应该在什么时候使用 我尝试了一下谷歌搜索,在博士后的文档中搜索:,但没有得到好结果。 我在谷歌上尝试了以下搜索: 后双结肠 博士后:: :: 我在postgres文档搜索按钮中尝试了以下搜索 双冒号 双结肠铸型 :: 这样问几乎让人难堪,但我认为谷歌很有希望在将来为其他人看到这个答案

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

SELECT '{apple,cherry apple, avocado}'::text[];
这似乎是某种演员阵容。什么是postgres中的
,应该在什么时候使用

我尝试了一下谷歌搜索,在博士后的文档中搜索
,但没有得到好结果。
我在谷歌上尝试了以下搜索:

  • 后双结肠
  • 博士后::
  • ::
我在postgres文档搜索按钮中尝试了以下搜索

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

这样问几乎让人难堪,但我认为谷歌很有希望在将来为其他人看到这个答案。

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

PostgreSQL接受两种等价的类型转换语法,即PostgreSQL特定的
value::type
和SQL标准
CAST(值为类型)

在这个特定的例子中,
“{apple,cherry apple,avocado}”:text[]
获取字符串literal
{apple,cherry apple,avocado}
,并告诉PostgreSQL将其解释为
文本数组

有关详细信息,请参阅和的文档。


此外,还有两种语法变体:

1. <代码>类型值 此表单仅强制转换常量(字符串文字)。例如:

SELECT date '2013-03-21';
SELECT date(date_as_text_col) FROM tbl;
更多信息请参见本章手册

2. <代码>类型(值) 这就是函数式语法。仅适用于名称作为函数名有效的类型。例如:

SELECT date '2013-03-21';
SELECT date(date_as_text_col) FROM tbl;
更多信息请参见本章手册

更全面的答案:


这是一个演员阵容(“类型强制”)Symbolhound对这类事情很好,它不能让你马上到达那里,但它能让你足够接近。@CraigRinger我用我运行的搜索更新了这个问题,尽我所能记住它们。这个问题和答案比“原始”更切题。另一个应该已经关闭。@ams感谢详细的更新,我希望它将来能帮助其他人。很好的一点是,虽然这不是真正的类型转换,但它是用于指定文本的语法的一部分。您不能写入
datesomecolumn
,只能写入
DATE'2012-01-01'
;ie必须是
TYPENAME'literalvalue'
@CraigRinger:非常好。我实际上是不精确的。澄清了我的帖子并添加了一点。