如何获取 Snowflake 上类型转换失败的列名
How to get the column name that failed a type conversion on Snowflake
考虑以下 SQL:
SELECT
value::number,
discount::number
FROM data
假设有一行 value
或 discount
的值是 002:23
,无法转换为数字。然后 Snowflake 会失败并出现类似于以下的错误:
100038 (22018): 01902838-0221-536e-0000-9ef90010d4d6: Numeric value
'002:36' is not recognized
有没有办法知道这个失败值来自哪一列?这将极大地帮助调试 table 将数十列解析为数字。
我就是这样做的,我会测试每一列,看看哪里出了问题。
希望对你有帮助...丰富
SELECT value
FROM data
WHERE value IS NOT NULL
AND TRY_TO_NUMBER(value) IS NULL;
您可以使用 TRY_CAST 而不是 ::number 进行转换,这将 return NULL 而不是在无法转换值时抛出错误:
SELECT
TRY_CAST(值作为数字)作为 "value",
TRY_CAST(折扣为数字)为 "discount"
来自数据
更多详情:https://docs.snowflake.net/manuals/sql-reference/functions/try_cast.html
考虑以下 SQL:
SELECT
value::number,
discount::number
FROM data
假设有一行 value
或 discount
的值是 002:23
,无法转换为数字。然后 Snowflake 会失败并出现类似于以下的错误:
100038 (22018): 01902838-0221-536e-0000-9ef90010d4d6: Numeric value '002:36' is not recognized
有没有办法知道这个失败值来自哪一列?这将极大地帮助调试 table 将数十列解析为数字。
我就是这样做的,我会测试每一列,看看哪里出了问题。
希望对你有帮助...丰富
SELECT value
FROM data
WHERE value IS NOT NULL
AND TRY_TO_NUMBER(value) IS NULL;
您可以使用 TRY_CAST 而不是 ::number 进行转换,这将 return NULL 而不是在无法转换值时抛出错误:
SELECT TRY_CAST(值作为数字)作为 "value", TRY_CAST(折扣为数字)为 "discount" 来自数据
更多详情:https://docs.snowflake.net/manuals/sql-reference/functions/try_cast.html