如何在 BigQuery 中使用 CONCAT 语句和 CASE 语句?

How to use a CONCAT statement with a CASE statement in BigQuery?

是否可以在 BigQuery 中将 CONCAT 与 CASE 语句一起使用?如果是这样,如何?

当我们尝试这段代码时,它给出了以下错误:

SELECT 

CONCAT(
     "Age:",
     CASE WHEN Age IS null THEN "" ELSE Age END AS Age
) AS AgeString

FROM [our table] 

Error: Encountered " "AS" "AS "" at line 5, column 49. Was expecting: ")" ...

问题在这里:

SELECT 

CONCAT(
     "Age:",
     CASE WHEN Age IS null THEN "" ELSE Age END AS Age  -- <- this alias
) AS AgeString

FROM [our table] 

由于您不能将别名放入表达式中,因此此查询 returns 使用旧版或标准 SQL 时出错。解决方法是删除别名:

SELECT 

CONCAT(
     "Age:",
     CASE WHEN Age IS null THEN "" ELSE Age END
) AS AgeString

FROM [our table] 

作为替代方案 - 如果出于某种原因别名对你来说是 "important" 例如来自记录预期 and/or 使代码更多 verbose/descriptive - 你可以用 [= 结束 CASE 16=] 如下

#standardSQL
SELECT CONCAT(
  "Age:",
  (SELECT CASE WHEN Age IS NULL THEN "" ELSE Age END AS Age)
) AS AgeString
FROM `project.dataset.table`