数据库连接器错误:ADO错误代码:0x80004005
将数据类型varchar转换为数字
时出错
我试过这个:
SELECT CAST(debit as DECIMAL(9,2)) FROM sum_balance
答案 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