如何在sql查询中将varchar转换为numeric或double

时间:2014-12-29 15:51:18

标签: c# sql-server crystal-reports

数据库连接器错误:ADO错误代码:0x80004005

  

将数据类型varchar转换为数字

时出错

我试过这个:

SELECT CAST(debit as DECIMAL(9,2)) FROM sum_balance

2 个答案:

答案 0 :(得分:0)

使用此:

ROUND(CONVERT(DECIMAL(18,2),'You Value here'),2)

这会将你的varchar转换为十进制,并在十进制后显示2位数

答案 1 :(得分:0)

你做得对,但你得到的错误可能是因为你的表中有一些数据无法转换为数值,这是其中一个值中可能出现的意外字符。

一种方式就像是

SELECT CASE WHEN ISNUMERIC(debit) = 1 
            THEN CAST(debit as DECIMAL(9,2)) 
         ELSE NULL 
       END  AS debit
FROM sum_balance

AS NoDisplayName已指出ISNUMERIC函数将为123e11之类的值返回true,因为它看到123 ^ 11或123升至11的幂。解决方法是使用以下内容:

SELECT CASE WHEN debit NOT LIKE '%[^.0-9]%'
            THEN CAST(debit as DECIMAL(9,2)) 
         ELSE NULL 
       END  AS debit
FROM sum_balance