2014-07-14 112 views
0
select 
T1.Col1, 
CASE T1.Col1 
    WHEN 99.95 THEN '18.97' 
END 
from Table T1 

当我执行上述的SQL查询我得到下面的错误消息:十进制数据在varchar数据类型 - 算术溢出错误转换VARCHAR到数据类型数值

Arithmetic overflow error converting varchar to data type numeric.

的数据类型列T1.Col1Varchar,但保存例如18.97的数据。糟糕的设计,但必须忍受它。

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

请帮忙。

这是SQL Server 2005.对不起,没有先分享这个。

回答

0

尝试的下面任何:

  1. 尝试使用单引号值的情况下(由于T1.col1是一个varchar)

    select 
    T1.Col1, 
    CASE T1.Col1 
        WHEN '99.95' THEN '18.97' 
    END 
    from Table T1 
    
  2. 尝试转换VARCHAR串(T1.col1 )编号,然后使用TO_NUMBER函数检查案例条件

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

select T1.Col1,case CONVERT(DECIMAL,LTRIM(RTRIM(T1.Col1))) \t \t \t WHEN '99 .99'THEN 18.97 END from Table T1。这对我有效。非常感谢围绕这个概念推动这个想法。我想在跨平台上工作确实有帮助。 :) – msbikk

相关问题