You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake含特殊字符数据插入及小时值提取报错求助

Snowflake提取文件名中小时值的错误解决方法

错误原因

你编写插入脚本时的SQL语句存在参数错误:cast(replace(substr(METADATA$FILENAME,28,2),'/,'') as number)里,replace函数的第二个参数写成了'/,',这导致无法正确替换掉文件名中的斜杠,最终出现'5/'这类带非数字字符的字符串,转换数字时触发22018错误。

修复后的基础写法

直接使用你之前测试成功的正确语句即可:

cast(replace(substr(METADATA$FILENAME,28,2),'/','') as number)

这里replace的第二个参数是'/',第三个参数是空字符串,能正确移除截取部分中的斜杠,确保转换为数字时无异常。

更稳健的优化写法

依赖固定位置28截取的写法,一旦文件路径结构变化就会失效,推荐用SPLIT_PART函数按路径规则提取,适配不同长度的前置路径:

cast(split_part(split_part(METADATA$FILENAME, 'hour=', 2), '/', 1) as number)
  • 第一步split_part(METADATA$FILENAME, 'hour=', 2):按hour=分割字符串,取第二部分得到12/85b3e2d8-0195-4238-b246-7ed6564ac464.json
  • 第二步split_part(..., '/', 1):再按/分割,取第一部分得到12
  • 最后转换为数字,无需依赖固定字符位置,兼容性更强。

内容的提问来源于stack exchange,提问作者user13975334

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 03:51:34