在PostgreSQL中做什么?

ams*_*ams 62 postgresql syntax types casting typecast-operator

::在网上看过各种涉及postgres代码的地方.例如:

SELECT '{apple,cherry apple, avocado}'::text[];
Run Code Online (Sandbox Code Playgroud)

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

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

  • postgres双结肠
  • postgres ::
  • ::

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

  • 双结肠
  • 双冒号演员
  • ::

问这个问题几乎令人尴尬,但我认为Google希望将来能够为其他人看到这个答案.

PSR*_*PSR 65

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

PostgreSQL接受两种等效的类型转换语法,PostgreSQL特定value::type和SQL标准CAST(value AS type).

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

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


Erw*_*ter 9

@PSR和@Craig写的是什么.
此外,还有两种语法变体:

1. type value

此表单仅强制转换常量(字符串文字).像:

SELECT date '2013-03-21';
Run Code Online (Sandbox Code Playgroud)

更多内容在" 其他类型的常量 "一章中的手册中.

2. type(value)

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

SELECT date(date_as_text_col) FROM tbl;
Run Code Online (Sandbox Code Playgroud)

更多内容在" 类型转换 "一章的手册中.

  • 好点,虽然这不是真正的*类型转换*,但它是指定文字的语法的一部分.你不能写'DATE somecolumn`,只能写'DATE'2012-01-01'`; 即它必须是'TYPENAME'literalvalue'. (3认同)
  • @CraigRinger:非常好的一点。我其实是不精确的。澄清了我的帖子并添加了一些内容。 (2认同)