如何在 SQL 查询中将 varchar 转换为数字或双精度
本文关键字:转换 数字 双精度 varchar SQL 查询 | 更新日期: 2023-09-27 18:35:44
数据库连接器错误:ADO 错误代码:0x80004005
将数据类型 varchar 转换为数字时出错
我试过这个:
SELECT CAST(debit as DECIMAL(9,2)) FROM sum_balance
使用这个:
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