Varchar数据类型中的十进制数据 - 将varchar转换为数据类型numeric的算术溢出错误

时间:2014-07-14 08:56:13

标签: sql math overflow

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。设计不佳但必须忍受它。

在发布此处之前,我尝试了很多方法来使代码正常工作。对于ex我试图将数据转换为varchar,十进制也试图看看我是否可以使用字符而不是十进制值,也尝试使用cast函数。

请帮忙。

这是SQL Server 2005.很抱歉没有先分享这个。

1 个答案:

答案 0 :(得分:0)

尝试以下任何一项:

  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