2014-07-14 135 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

相關問題