字符到十进制

时间:2019-03-29 22:17:51

标签: sql type-conversion ssms

我正在尝试将两个字段相乘。问题是,一个是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) 

,并得到相同的错误。

是否可以将此列的数据类型更改为十进制,以便将两个值相乘?

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

使用TRY_CONVERT()并将其分别用于每个值:

(TRY_CONVERT(DOUBLE PRECISION, TABLENAME.QTYSHIPPED) *
 TRY_CONVERT(DOUBLE PRECISION, LITERS.[VALUE])
)