我们正在使用BigQuery的非遗留SQL将STRING字段转换为DATETIME字段。
DATETIME字段已损坏,其值为“None”和“0.0”,这会导致我们的CAST语句失败。
我们看到,对于其他类型的SQL,有TRY-CATCH函数和ISNUMERIC()测试 - 这些测试似乎都不支持BigQuery。
这是一个捕获“无”但无法捕获随机浮点数或整数的示例:
CASE
WHEN UPDT_DT_TM LIKE 'None' THEN NULL
ELSE CAST(UPDT_DT_TM AS DATETIME)
END AS UPDT_DT_TM,
除了BigQuery中的用户定义函数(UDF)之外 - 还有其他任何方法可以创建一个CASE语句,它可以在可以转换为DATETIME但是只是将值保留为NULL吗?
您可以使用SAFE_CAST
函数,如果在解释为所需类型时输入不是有效值,则返回NULL。在你的情况下,你只需使用SAFE_CAST(UPDT_DT_TM AS DATETIME)
。它在Functions & Operators documentation。