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

BigQuery查询报错:STRING与INT64类型不匹配问题求助

解决BigQuery中IN子查询类型不匹配的问题
  • 错误核心:你用IN子查询匹配的两个字段类型不兼容——一个是STRING字符串类型,一个是INT64整数类型,BigQuery不允许不同数据类型直接做IN比较。
  • 快速修复:找到报错提示里的第5行第8位附近的代码,把其中一方的字段类型转换成和另一方一致:
    • 若主查询字段是STRING、子查询返回的是INT64,就在子查询里转换:CAST(目标字段 AS STRING)
    • 若主查询字段是INT64、子查询返回的是STRING,就在子查询里转换:CAST(目标字段 AS INT64)
  • 教程无报错的原因:大概率是教程使用的数据集里,对应字段的类型是完全匹配的;而你当前用的数据集可能做了版本更新,或者误选了不同的数据集,导致字段类型和教程不一致。

举个具体的修改例子,假设你的原查询是:

SELECT station_name
FROM `bigquery-public-data.bike_share.stations`
WHERE station_id IN (
  SELECT start_station_id
  FROM `bigquery-public-data.bike_share.trips`
  WHERE user_type = 'Subscriber'
)

如果station_id是STRING类型、start_station_id是INT64类型,修改后的查询可以是:

SELECT station_name
FROM `bigquery-public-data.bike_share.stations`
WHERE station_id IN (
  SELECT CAST(start_station_id AS STRING)
  FROM `bigquery-public-data.bike_share.trips`
  WHERE user_type = 'Subscriber'
)

或者反过来把主查询的字段转成INT64:

SELECT station_name
FROM `bigquery-public-data.bike_share.stations`
WHERE CAST(station_id AS INT64) IN (
  SELECT start_station_id
  FROM `bigquery-public-data.bike_share.trips`
  WHERE user_type = 'Subscriber'
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:04:58