如何在 SQL 查询中将 varchar 转换为数字或双精度

本文关键字:转换 数字 双精度 varchar SQL 查询 | 更新日期: 2023-09-27 18:35:44

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

将数据类型 varchar 转换为数字时出错

我试过这个:

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

如何在 SQL 查询中将 varchar 转换为数字或双精度

使用这个:

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

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

您做对了,但是您得到的错误可能是因为表中的某些数据无法转换为数值,其中一个值中可能存在意外字符。

一种解决方法是这样的

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

AS NoDisplayName已经指出,对于像123e11这样的值,ISNUMERIC 函数将返回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