【问题标题】:Decimal Data in Varchar datatype - Arithmetic overflow error converting varchar to data type numericVarchar 数据类型中的十进制数据 - 将 varchar 转换为数字数据类型的算术溢出错误
【发布时间】:2014-07-14 08:56:12
【问题描述】:
select 
T1.Col1,
CASE T1.Col1
   WHEN 99.95 THEN '18.97'
END 
from Table T1

当我执行上述 SQL 查询时,我收到以下错误消息:

Arithmetic overflow error converting varchar to data type numeric.

T1.Col1 列的数据类型是 Varchar,但包含例如 18.97 的数据。糟糕的设计,但不得不忍受。

在发布到这里之前,我已经尝试了很多方法来让这段代码正常工作。例如,我尝试将数据转换为 varchar,decimal 还尝试查看是否可以使用字符而不是十进制值,还尝试使用强制转换函数。

请帮忙。

这是 SQL Server 2005。很抱歉没有早点分享。

【问题讨论】:

    标签: sql math overflow


    【解决方案1】:

    尝试以下任一方法:

    1. 尝试使用单引号作为大小写值(因为 T1.col1 是一个 varchar)

      select 
      T1.Col1,
      CASE T1.Col1
         WHEN '99.95' THEN '18.97'
      END 
      from Table T1
      
    2. 在使用 TO_NUMBER 函数检查大小写条件之前尝试将 varchar 字符串 (T1.col1) 转换为数字

      select 
      T1.Col1,
      CASE TO_NUMBER(T1.Col1, '99.99') 
         WHEN 99.95 THEN '18.97'
      END 
      from Table T1
      

    【讨论】:

    • select T1.Col1, case CONVERT(DECIMAL, LTRIM(RTRIM(T1.Col1))) WHEN '99.99' THEN 18.97 END 从表 T1 中。这对我有用。非常感谢您围绕这个概念提出这个想法。我想在跨平台上工作确实有帮助。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多