BigQuery报错Bad int64 value 带横杠长字符串转整数的解决方法
报错原因
BigQuery 中INT64(即SQL语句中的int类型)的合法取值范围为 -9223372036854775808 ~ 9223372036854775807,最多仅支持19位有效数字。你去掉横杠后得到的数值16351882649843842141356共计23位,远超出INT64的最大取值上限,因此触发类型转换报错。
解决方案
可根据你的实际使用场景选择对应处理方式:
- 若该字段仅作为唯一标识使用,无需进行加减乘除等数值计算,直接保留为字符串类型即可,无需转数值:
SELECT REPLACE(my_table.my_column, '-', '') AS processed_id FROM my_table - 若你确实需要对该字段做数值运算,可转换为支持更大取值范围的
BIGNUMERIC类型,该类型最大支持76位有效数字,完全覆盖你的数值长度:SELECT CAST(REPLACE(my_table.my_column, '-', '') AS BIGNUMERIC) AS processed_num FROM my_table
内容的提问来源于stack exchange,提问作者Mark McGown
相关产品推荐
相关产品推荐

