gpt4 book ai didi

postgresql - 幻影 "name"列?

转载 作者:行者123 更新时间:2023-11-29 11:53:55 27 4
gpt4 key购买 nike

我从简单开始:

hoops=# select * from core_school limit 3;
id | school_name | nickname
----+------------------+----------
1 | Marshall |
2 | Ohio |
3 | Houston |
(10 rows)

让我们引入一个故意错误:

hoops=# select name from core_school;
ERROR: column "name" does not exist
LINE 1: select name from core_school;

但是为什么这行得通呢? (结果出乎意料!):

hoops=# select core_school.name from core_school limit 3;
name
-----------------
(1,Marshall,"")
(2,Ohio,"")
(3,Houston,"")
(3 rows)

第三个查询中的“name”列是从哪里来的?

最佳答案

这是 PostgreSQL 的自动转换功能,它允许调用 function(argument) 作为 argument.function

你真正调用的是

SELECT  NAME(core_school)
FROM core_school

与此比较:

SELECT  (1::int).exp
--
2.71828182845905

这是不言自明的。

此“功能”经常导致混淆,并且(最终)将在 9.1 中删除。

关于postgresql - 幻影 "name"列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5706172/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com