首页 文章

BigQuery相当于COALESCE()?

提问于
浏览
6

我正在将一些聚合查询从Postgres转换为BigQuery中的新架构 . BigQuery中是否有等效的COALESCE()?

目前,我正在转换Postgres查询语句,如

coalesce(column1,'DEFAULT')

CASE
  WHEN column1 IS NOT NULL
     THEN column1
   ELSE 'DEFAULT'
END AS column1

这似乎很容易 .

但是,使用嵌套的coalesce语句转换Postgres查询语句

count(distinct coalesce(
                coalesce(
                coalesce(column1,column2),
                                 column3),
                                 column4)))

如果我在整个地方使用 CASE 语句会变得更加混乱,而且看起来也错了 .

BigQuery有一个与 COALESCE() 等效的方法,还是我写了整个 CASE 语句等效?

1 回答

  • 13

    你可以在BigQuery中使用IFNULL函数,它可以像这样嵌套:

    select ifnull(column1,
                  ifnull(column2,'DEFAULT')) 
    from 
    (select string(NULL) as column1, 'y' as column2)
    

    附:但是在BigQuery中省略COALESCE是一种疏忽,我会修复它 .

    Update: 截至2015年4月16日,COALESCE可在BigQuery中使用 .

相关问题