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

如何在SQL中将数值替换为NULL?BigQuery数据清洗报错求助

在BigQuery中把错误录入为0的缺失值替换为NULL

在BigQuery里,有两种简单直接的方法可以将字段中错误的0值替换为NULL,解决你的问题:

1. 使用NULLIF函数(最简洁)

NULLIF函数专门用于当字段值等于指定值时返回NULL,否则返回原字段值,完全匹配你的需求。语法如下:

NULLIF(目标字段, 要替换的值)

针对你的天气表,处理风速和能见度字段的示例SQL:

SELECT
  date,
  -- 将风速为0的值替换为NULL
  NULLIF(wind_speed, 0) AS cleaned_wind_speed,
  -- 将能见度为0的值替换为NULL
  NULLIF(visibility, 0) AS cleaned_visibility
FROM
  `你的项目ID.你的数据集ID.weather_2023`;

2. 使用CASE语句(更灵活)

如果后续需要处理多种无效值的复杂判断逻辑,可以用CASE语句实现:

SELECT
  date,
  CASE
    WHEN wind_speed = 0 THEN NULL
    ELSE wind_speed
  END AS cleaned_wind_speed,
  CASE
    WHEN visibility = 0 THEN NULL
    ELSE visibility
  END AS cleaned_visibility
FROM
  `你的项目ID.你的数据集ID.weather_2023`;

常见报错排查

如果执行时出现报错,优先检查这两点:

  • 字段类型不匹配:如果风速/能见度字段是字符串类型(而非数值型),要把判断值改成字符串格式,比如NULLIF(wind_speed, '0')
  • 表路径或权限错误:确认项目、数据集、表名完全正确,且你有对应的查询/修改权限

直接修改原表(可选)

如果需要将替换结果持久化到原表,使用UPDATE语句(添加WHERE条件限制更新范围,避免全表扫描):

UPDATE `你的项目ID.你的数据集ID.weather_2023`
SET
  wind_speed = NULLIF(wind_speed, 0),
  visibility = NULLIF(visibility, 0)
WHERE
  wind_speed = 0 OR visibility = 0;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 21:14:51