我有一个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无效。任何帮助,将不胜感激。
答案 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