:: 在 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 文档搜索按钮中尝试了以下搜索
双冒号 双冒号 ::在 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 的对象? [复制]