如何在BigQuery SQL中捕获失败的CAST语句?

Pra*_*les 3 datetime casting google-bigquery

我们正在使用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,
Run Code Online (Sandbox Code Playgroud)

除了BigQuery中的用户定义函数(UDF)之外 - 还有其他任何方法可以创建一个CASE语句,它可以在可以转换为DATETIME但是只是将值保留为NULL吗?

Ell*_*ard 9

您可以使用该SAFE_CAST函数,如果在解释为所需类型时输入不是有效值,则返回NULL.在你的情况下,你只需要使用SAFE_CAST(UPDT_DT_TM AS DATETIME).它位于Functions&Operators文档中.