NULL中的列不能用于Bigquery

时间:2018-06-18 13:38:39

标签: sql google-cloud-platform google-bigquery sqldatatypes

我正在构建动态sql生成器,并且在联合查询时遇到困难。 当我运行以下查询时:

SELECT NULL AS field;

默认情况下,列类型为BOOL,它可以与整数类型列结合使用,如下所示:

SELECT  field
FROM 
    (SELECT 21 AS field),
    (SELECT NULL AS field)

这会返回成功的结果。 但是当我在一个子查询上使用字符串类型运行类似的查询时,它会失败 这是查询失败的无法联合表:不兼容的类型。 '字段' :STRING' field' :BOOL

SELECT  field
FROM
    (SELECT 'hello' AS field),
    (SELECT NULL AS field)

推断类型和转换空值的最佳方法是什么。我的sql生成器应该在union上使用几种数据类型,我认为null可以用于所有类型。如果null不能与字符串和其他类型一起使用,那么是否有超级'可用于替换空字段的类型?

1 个答案:

答案 0 :(得分:2)

BigQuery为NULL值分配一个类型,默认情况下是一个整数。要获取字符串NULL,请转换:

cast(null as string)

我不知道生成器是如何工作的,但您可以安排一个引用正确转换值的查询:

with params as (
      select cast(null as string) as null_str
     )
select null_str
from params cross join
     . . .