在雪花中使用 try_cast 处理非常长的数字
Posted
技术标签:
【中文标题】在雪花中使用 try_cast 处理非常长的数字【英文标题】:Using try_cast in snowflake to deal with very long numbers 【发布时间】:2021-01-27 16:44:53 【问题描述】:我在雪花中使用 try_cast 将 sql 中的任何长值转换为 NULL。
这是我的代码:
当我尝试运行上述代码时,我收到如下错误:
我正在展平 JSON 数组并使用 try_cast 将任何大值设为 NULL,因为我收到错误 无法转换变量值 numberLong: -8301085358432
SELECT try_cast(item.value:price) as item_price,
try_cast(item.value:total_price_bill) as items_total_price
FROM table, LATERAL FLATTEN(input => products) item
错误:
第 1 行位置 ')' 处的 SQL 编译错误错误。
我不明白我在哪里做错了
【问题讨论】:
【参考方案1】:您对 try_cast 使用了错误的语法。根据snowflake documentations,语法是:
TRY_CAST( <source_string_expr> AS <target_data_type> )
还要注意:
-
仅适用于字符串表达式。
target_data_type 必须是以下之一:
VARCHAR(或其任何同义词)
NUMBER(或其任何同义词)
双重
布尔值
日期
时间
TIMESTAMP、TIMESTAMP_LTZ、TIMESTAMP_NTZ 或 TIMESTAMP_TZ
例如,如果item.value:price
是字符串,则必须有这样的东西:
select try_cast(item.value:price as NUMBER) as item_price,
....
【讨论】:
以上是关于在雪花中使用 try_cast 处理非常长的数字的主要内容,如果未能解决你的问题,请参考以下文章