dbchar中的varchar到十进制转换

时间:2014-04-22 18:15:48

标签: sql casting db2

我正在尝试将varchar字段转换为decimal中的db2字段但我收到错误

AMOUNT字段是varchar字段,需要转换为decimal(31,3)

以下是我的查询

SELECT CAST(ROUND(TRIM(AMOUNT),3) AS DECIMAL(31,3))
FROM TABLENAME

注意:AMOUNT field (varchar)也有NULL值 样本值:

7.324088  
-42.97209  
854  
NULL  
6  
6  
350  
-6  
15.380584  
1900

我收到以下错误:

  

在函数的字符串参数中找到无效字符   " DECFLOAT&#34 ;. SQLSTATE = 22018

2 个答案:

答案 0 :(得分:4)

尝试做

SELECT CAST(ROUND(COALESCE(TRIM(AMOUNT),0),3) AS DECIMAL(31,3))
FROM TABLENAME

答案 1 :(得分:0)

您确定输入值与同一语言环境相对应吗?我的意思是减号减去或MS字减去?小数点分隔符怎么样?在某些语言中,有一个逗号而不是一个点。

coalesce函数从参数中检索第一个非null值。在示例中:

coalesce (amount, 0)

如果amount为null,则返回0.

您确定传递空值或字符为'NULL'的字符串,因为在这种情况下您必须使用替换函数将'NULL'转换为'0'。

replace (amount, 'NULL', '0')