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

Snowflake(SQL)列值替换:正则提取值为0返回空如何替换为0

问题原因

你当前使用的正则规则\\d+\.\\d+强制要求匹配内容必须包含「小数点+小数部分」,纯整数0不符合这个格式规则,因此匹配失败返回null。

修正方法

分两步调整即可:

  • 优化正则规则,把小数点和小数部分设为可选匹配项,兼容整数、小数两类数值格式,从根源解决0无法匹配的问题
  • 外层套空值处理函数,把所有匹配失败(比如字段中完全无有效数值)返回的null统一替换为0

不同SQL引擎的最终写法参考:

  • 适用于Hive、Spark SQL、Presto/Trino、Oracle等多数引擎的通用写法
COALESCE(
  CAST(regexp_substr(data, '\\d+(\\.\\d+)?') AS DOUBLE),
  0
) AS Age
  • 适用于MySQL的写法
IFNULL(
  CAST(regexp_substr(data, '\\d+(\\.\\d+)?') AS DECIMAL(10,2)),
  0
) AS Age

正则规则说明:\\d+(\\.\\d+)?中,(\\.\\d+)?代表「小数点+后续数字」的组合为可选匹配项,既可以识别12.5这类带小数的数值,也可以正常匹配0、30这类纯整数,不会漏匹配整数场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:18:40