在 BigQuery 的公共表达式 (CTE) 中使用NULL时,可能存在类型问题。具体来说,如果输入数据中某些列的类型被解释为NULL,则在CTE中使用这些列可能会导致类型不匹配的错误。
要解决这个问题,可以在CTE中使用CAST或SAFE_CAST函数将输入数据中的列转换为预期的类型。这将确保在CTE中使用这些列时,它们的类型与预期的类型相匹配,避免出现类型不匹配的错误。
以下是一个例子,其中使用CAST函数将输入数据中的列转换为INT类型:
WITH input_data AS ( SELECT 'John' as name, 22 as age, NULL as zipcode UNION ALL SELECT 'Mary', 35, 12345 )
SELECT name, CAST(age AS INT), CAST(zipcode AS INT) FROM input_data
在上面的例子中,列zipcode被解释为NULL。在CTE中使用它需要将其转换为INT类型,以确保其类型与其他列匹配。
使用CAST或SAFE_CAST函数将列转换为期望的类型是解决 BigQuery CTE中NULL类型问题的常见方法。