【问题标题】:Arithmetic overflow error for type intint 类型的算术溢出错误
【发布时间】:2025-11-29 23:05:01
【问题描述】:

我目前在对表格进行选择时遇到此错误

int 类型的算术溢出错误,值 = 4318826193.000000。

我正在尝试找出导致此问题的列,使用此值 4318826193.000000 找出导致此问题的列的最佳方法是什么?

我尝试使用 CAST([column name] as bigint) 编写包含所有 INT 列的 select 语句,但错误仍然出现。

 SELECT
       CAST(Id AS BIGINT)
      ,CAST (CreatedBy as BIGINT)
      ,CAST (UpdatedBy as BIGINT)
      ,CAST (HeaderId as BIGINT)
      ,CAST (DiskFileId as BIGINT)
      ,CAST (Status as BIGINT)
      ,CAST (TotalLines as BIGINT)
      ,CAST (CompletedLines as BIGINT)
      ,CAST (ProcessedLines as BIGINT)
      ,CAST (PercentComplete as BIGINT)
      ,CAST (SecondsRemaining as BIGINT)
      ,CAST (RollbackUser as BIGINT)
      ,CAST (CreatedRecords as BIGINT)
      ,CAST (UpdatedRecords as BIGINT)
      ,CAST (SkippedRecords as BIGINT)
      ,CAST (DiallerExportProgress as BIGINT)
      ,CAST (idxCampaignId as BIGINT)
      ,CAST (ScheduleId as BIGINT)
      ,CAST (CampaignId as BIGINT)

 from [table_name]

谢谢

【问题讨论】:

  • 您使用的 RDBMS 和版本是什么?
  • (1) 编辑您的问题并显示您正在使用的查询(可能是简化的0)。(2) 使用您正在使用的数据库标记问题。
  • 4318826193 不是有效的 int,但 bigint 应该可以正常工作。您使用的是哪个 dbms?
  • int 的最大值为 2.14B。使用 bigint 甚至小数(16,0)
  • 该值不能出现在表格的 int 列中。您能否发布您尝试执行的查询?

标签: sql sql-server sql-server-2012


【解决方案1】:

使用Try_convert,用于转换失败而不是报错,TRY_Convert 抛出null

select try_convert(int,4318826193.000000)

如何使用..

Select TRY_CONVERT(BIGINT,DiskFileId)

【讨论】:

  • 所以在我目前正在做的选择语句中,我将如何使用它?
  • 谢谢,这正是我所需要的
【解决方案2】:

您可以在所有列上使用 max 并获取最大值以查找生成它的列。

【讨论】:

    最近更新 更多