【问题标题】:What does :: do in PostgreSQL? [duplicate]:: 在 PostgreSQL 中做什么? [复制]
【发布时间】:2013-03-10 09:12:04
【问题描述】:

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

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

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

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

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

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

  • 双冒号
  • 双冒号
  • ::

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

【问题讨论】:

  • 这是一个强制转换(“类型强制”)
  • Symbolhound 非常适合这种事情,symbolhound.com/?q=postgresql+%3A%3A 不能让您到达那里,但它可以让您足够接近。
  • @CraigRinger 我用我运行的搜索更新了这个问题,尽我所能记住它们。
  • 这个问题和答案比“原始”要重要得多。另一个应该已经关闭了。
  • @ams 感谢您的详细更新,希望以后对其他人有所帮助。

标签: postgresql syntax types casting typecast-operator


【解决方案1】:

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

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

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

有关详细信息,请参阅 SQL expressionsarrays 上的文档。

【讨论】:

    【解决方案2】:

    What @PSR and @Craig wrote.
    另外,还有另外两种语法变体

    1.type value

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

    SELECT date '2013-03-21';
    

    更多内容在手册Constants of Other Types一章中。

    2.type(value)

    这就是函数式语法。仅适用于名称作为函数名称有效的类型。喜欢在:

    SELECT date(date_as_text_col) FROM tbl;
    

    更多内容在手册Type Casts一章中。

    更全面的答案:

    【讨论】:

    • 好点,虽然这不是真正的类型转换,但它是指定文字的语法的一部分。不能写DATE somecolumn,只能写DATE '2012-01-01';即它必须是TYPENAME 'literalvalue'
    • @CraigRinger:很好。我实际上是不精确的。澄清了我的帖子并添加了一些内容。
    猜你喜欢
    • 2016-05-09
    • 2015-10-21
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多