在 BigQuery 中正确使用 COALESCE()

Posted

技术标签:

【中文标题】在 BigQuery 中正确使用 COALESCE()【英文标题】:Correct use of COALESCE() in BigQuery 【发布时间】:2020-01-13 11:47:14 【问题描述】:

我正在运行以下脚本:

select COALESCE(test1,test2,test3)
from (select null as test1,'' as test2,'fdsda' as test3)

并收到以下错误:

对于参数类型的函数 COALESCE 没有匹配的签名:INT64, 字符串,字符串。支持的签名:COALESCE([ANY, ...]) at [1:8]

知道这个错误的原因吗?

【问题讨论】:

【参考方案1】:

使用COALESCE 时,您必须提供相同类型的参数。 例如,如果第一个参数是 STRING,那么其他参数也应该是 STRING。 在您的情况下,您尝试提供 INTEGER 作为第一个参数,并为其他参数提供 STRING。

希望对你有帮助

【讨论】:

很高兴知道 NULL 是一个 int 类型 :)【参考方案2】:

使用

select COALESCE(test1,test2,test3) from (select cast(null as string) as test1,'' as test2,'fdsda' as test3)

无论如何,我同意 rmesteves - 合并中的不同类型没有意义。

【讨论】:

以上是关于在 BigQuery 中正确使用 COALESCE()的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:Coalesce 将 TIMESTAMP 转换为 INTEGER

带有 SELECT 子查询的 BigQuery COALESCE()

如何在 bigquery 中使用带有 JSON EXTRACT 的正则表达式

Bigquery 如果字段存在

在 BigQuery 中使用 DATE_TRUNC 的正确方法是啥?

BigQuery 中的联接性能缓慢