:: 在 PostgreSQL 中做啥? [复制]

Posted

技术标签:

【中文标题】:: 在 PostgreSQL 中做啥? [复制]【英文标题】: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 感谢您的详细更新,希望以后对其他人有所帮助。 【参考方案1】:

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

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

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

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

【讨论】:

【参考方案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一章中。

更全面的答案:

Postgres data type cast

【讨论】:

好点,虽然这不是真正的类型转换,但它是指定文字的语法的一部分。不能写DATE somecolumn,只能写DATE '2012-01-01';即它必须是TYPENAME 'literalvalue' @CraigRinger:很好。我实际上是不精确的。澄清了我的帖子并添加了一些内容。

以上是关于:: 在 PostgreSQL 中做啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

“?”是啥意思?和“:”在布尔语句中做啥? [复制]

我必须在 Python 中做啥才能创建一个代表 2019 年 1 月 1 日纽约时间(东部时间)18:00 的对象? [复制]

3D 在这个 HTML 中做啥?

~> 运算符是做啥的? [复制]

startMonitoringFromRegion - 在 didEnterRegion 中做啥?

是啥! (感叹号)在 FreeMarker 中做啥?