我正在尝试将两个字段相乘。问题是,一个是CHAR,一个是DECIMAL。
OEAUDD.QTYSHIPPED = DECIMAL
LITERS.[VALUE] = CHAR
(此列不仅包含数字值,因此我无法永久更改该列中的数据类型。但是,我提取的所有数据仅是数字数据,我需要能够将其相乘由qtyshipped
)
原始代码:
CONVERT (DOUBLE PRECISION, TABLENAME.QTYSHIPPED*LITERS.[VALUE]) AS 'TotalLitersSold'
这工作了一段时间,然后突然开始抛出错误:
信息8114,第16级,州5,第3行 将数据类型varchar转换为数字时出错
尝试:
CONVERT (DECIMAL,LITERS.[VALUE])
,并得到相同的错误。
尝试:
CAST (LITERS.[VALUE] AS DECIMAL)
,并得到相同的错误。
是否可以将此列的数据类型更改为十进制,以便将两个值相乘?
预先感谢您的帮助。
答案 0 :(得分:1)
使用TRY_CONVERT()
并将其分别用于每个值:
(TRY_CONVERT(DOUBLE PRECISION, TABLENAME.QTYSHIPPED) *
TRY_CONVERT(DOUBLE PRECISION, LITERS.[VALUE])
)