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

问题描述 投票:1回答:1

我们正在使用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吗?

datetime casting google-bigquery
1个回答
6
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.