我是第一次阅读 PostgreSQL 文档,当面对 SQL 函数时,我想我已经了解了所有基础知识,但仍然看不出使用其中一个或另一个之间以及何时使用之间的SELECT sql_function(...)
区别SELECT * FROM sql_function(...)
。
我是第一次阅读 PostgreSQL 文档,当面对 SQL 函数时,我想我已经了解了所有基础知识,但仍然看不出使用其中一个或另一个之间以及何时使用之间的SELECT sql_function(...)
区别SELECT * FROM sql_function(...)
。
FROM
如果它是集合返回函数(SRF) ,则通常使用函数。此类函数返回结果集而不是单个值或元组。但是,令人困惑的是,这在 PostgreSQL 中并不是一成不变的:
您也可以在
SELECT
列表中调用 SRF,如SELECT f()
.正如文档所说:
FROM
您可以在子句中使用任何函数。然后将其视为仅返回单行的 SRF。前者用于标量函数(即返回标量结果/单个值),后者用于表函数(返回值的结果集而不是单个值的函数),这就是为什么语法是从中选择而不是前者。
Solomon Rutzky 在他对StackOverflow 帖子的回答中出色地描述了标量函数和表函数之间的区别。(它是特定于 Microsoft SQL Server 的,但概念是相同的,尤其是对于您在这种情况下的高级问题。)