【问题标题】:How to get the column name that failed a type conversion on Snowflake如何获取雪花类型转换失败的列名
【发布时间】:2019-11-12 01:47:11
【问题描述】:

考虑以下 SQL:

SELECT
  value::number,
  discount::number
FROM data

考虑有一行valuediscount 的值为002:23,无法转换为数字。 Snowflake 将失败并出现类似以下的错误:

100038 (22018):01902838-0221-536e-0000-9ef90010d4d6:数值 '002:36' 无法识别

有没有办法知道这个失败的值来自哪一列?这将极大地帮助调试一个将数十列解析为数字的表。

【问题讨论】:

    标签: snowflake-cloud-data-platform


    【解决方案1】:

    我就是这样做的,我会测试每一列,看看哪里出了问题。

    我希望这会有所帮助...丰富

    SELECT  value
    FROM    data
    WHERE   value IS NOT NULL 
    AND     TRY_TO_NUMBER(value) IS NULL;
    

    【讨论】:

    • 看来雪花不支持我想要的。同时,这是我能找到的最好的解决方法。谢谢!
    【解决方案2】:

    您可以使用 TRY_CAST 代替 ::number 进行转换,当值无法转换时,它将返回 NULL 而不是抛出错误:

    选择 TRY_CAST(value AS NUMERIC) AS "value", TRY_CAST(discount AS NUMERIC) AS “折扣” 来自数据

    更多详情:https://docs.snowflake.net/manuals/sql-reference/functions/try_cast.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-06
      • 2021-03-24
      • 2014-02-03
      • 1970-01-01
      • 2022-06-12
      • 2011-05-04
      • 2021-01-11
      • 1970-01-01
      相关资源
      最近更新 更多