SQL 用户定义函数是不是支持 SELECT 子句?

Posted

技术标签:

【中文标题】SQL 用户定义函数是不是支持 SELECT 子句?【英文标题】:Do SQL User-Defined Functions support SELECT clauses?SQL 用户定义函数是否支持 SELECT 子句? 【发布时间】:2017-09-26 20:18:28 【问题描述】:

基于 SQL 的 UDF 的文档是 sparse。我想知道是否可以使用查询中的 UDF 参数编写一个完整的 SELECT 子句。所以实际上,每次调用 UDF 都会产生一个子查询。

人为的例子:

CREATE TEMP FUNCTION foo(bar STRING) AS (
SELECT * FROM `example.latest` WHERE thing = bar
);

SELECT foo('abc')

BigQuery 给出错误“语法错误:意外的关键字 SELECT;未能解析 CREATE [TEMP] FUNCTION 语句”,所以我认为这是不可能的,但希望得到确认。

【问题讨论】:

【参考方案1】:

一般都支持 SELECT,但不幸的是您不能在 UDF 中引用表!

查看UDF Limitations了解更多

【讨论】:

如果这是你想要的,也可以star the feature request。谢谢!

以上是关于SQL 用户定义函数是不是支持 SELECT 子句?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 编译错误:无法评估不受支持的子查询类型 - SELECT 子句中的函数调用

在 WHERE 子句中使用函数编写 SQL SELECT 语句是不是有 Django 等效项?

如何修复此 SELECT 语句中的错误 INTO 子句

sql查询语句并不是最先执行SELECT

在 T-SQL 查询的 SELECT 子句中使用表值函数的“语法不正确”

SQL 错误 - Windows 函数只能出现在 SELECT 或 ORDER BY 子句中