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

如何在BigQuery中区分整数类型与字符串存储的整数

BigQuery动态值类型区分解决方案

你之前使用SAFE_CAST无法区分的核心原因是:原生INT64可以被安全转为STRING,STRING格式的合法整数也可以被安全转为INT64,两个判断条件都不会返回NULL,自然无法完成区分,可根据实际场景选择以下方案:

场景1:待检测值存储在JSON类型字段中

直接使用BigQuery内置的JSON_TYPE函数,可直接返回JSON值的原生类型,示例代码如下:

SELECT
  CASE JSON_TYPE(json_field.target_key)
    WHEN 'number' THEN '原生INT64数值类型'
    WHEN 'string' THEN 'STRING类型存储的整数值'
    ELSE '其他非目标类型'
  END AS value_type,
  COUNT(*) AS type_count
FROM `项目名.数据集名.表名`
GROUP BY value_type

场景2:待检测值为UNION(联合)类型字段

使用BigQuery内置的SQL_TYPEOF函数,可直接返回动态类型值的SQL数据类型,示例代码如下:

SELECT
  CASE SQL_TYPEOF(union_field)
    WHEN 'INT64' THEN '原生INT64类型'
    WHEN 'STRING' THEN 'STRING类型'
    ELSE '其他非目标类型'
  END AS value_type,
  COUNT(*) AS type_count
FROM `项目名.数据集名.表名`
GROUP BY value_type

特殊场景:多表联合查询导致类型隐式转换

如果你是将不同类型的列UNION后才无法通过原表schema获取类型,可以在UNION阶段主动添加类型标记字段,无需额外检测:

SELECT 
  column_value,
  'INT64' AS original_type 
FROM int_type_table
UNION ALL
SELECT 
  column_value,
  'STRING' AS original_type 
FROM string_type_table

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:54:04