She*_*dov 2 sql sqldatatypes google-bigquery google-cloud-platform
我正在工作中构建动态 sql 生成器,并且在联合查询方面遇到困难。当我运行以下查询时:
SELECT NULL AS field;
Run Code Online (Sandbox Code Playgroud)
列类型是BOOL默认的,它可以用于与整数类型列的联合,如下所示:
SELECT field
FROM
(SELECT 21 AS field),
(SELECT NULL AS field)
Run Code Online (Sandbox Code Playgroud)
这将返回成功的结果。但是当我在一个子查询上使用字符串类型运行类似的查询时,它失败了这里是查询失败,无法联合表:不兼容的类型。“字段”:字符串“字段”:BOOL:
SELECT field
FROM
(SELECT 'hello' AS field),
(SELECT NULL AS field)
Run Code Online (Sandbox Code Playgroud)
推断类型和转换空值的最佳方法是什么。我的 sql 生成器应该可以在 union 上使用多种数据类型,我认为 null 可以用于所有类型。如果 null 不能与字符串和其他一些类型一起使用,是否有任何“超级”类型可用于替换空字段?
Gor*_*off 12
BigQuery 为NULL值分配一个类型,默认情况下为整数。要获取 string NULL,请转换:
cast(null as string)
Run Code Online (Sandbox Code Playgroud)
我不知道生成器是如何工作的,但您也许可以安排一个引用正确转换值的查询:
with params as (
select cast(null as string) as null_str
)
select null_str
from params cross join
. . .
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4074 次 |
| 最近记录: |