对于转换函数

时间:2015-05-15 18:35:01

标签: replace rounding type-conversion case-when

我有一个varchar字段,其中包含我需要转换为十进制的数字,并在进行计算之前删除逗号。我得到一个数字对于转换的参数3无效。

以这些值为例。

Value varchar(8000) = 12,545
Pct_cmpt decimal(8,2) = 23.00 

SELECT
CONVERT(decimal(18,2),replace(value,',',''),ROUND(CASE WHEN ISNUMERIC(VALUE) = 1 THEN ISNULL(CONVERT(numeric, VALUE),0) *Pct_Cmpt/100  ELSE 0   END,2)) as Earned

参数数据类型numeric对于转换函数的参数3无效。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

所以我在摸了一会儿后想出来了。我不得不在CASE WHEN中移动我的REPLACE函数以使CONVERT工作。

Select
CONVERT(decimal(18,2),ROUND(CASE WHEN ISNUMERIC(VALUE) = 1 THEN ISNULL(CONVERT(numeric,replace(value, ',','')),0)*PCT_CMPT/100 ELSE 0   END,2)) as Earned