Replace 参数数据类型numeric对于convert函数的参数3无效

Replace 参数数据类型numeric对于convert函数的参数3无效,replace,rounding,type-conversion,case-when,Replace,Rounding,Type Conversion,Case When,我有一个varchar字段,其中包含在进行计算之前需要转换为十进制并删除逗号的数字。我得到一个数值对于convert的参数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,

我有一个varchar字段,其中包含在进行计算之前需要转换为十进制并删除逗号的数字。我得到一个数值对于convert的参数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对于convert函数的参数3无效。任何帮助都将不胜感激

所以我搔了一会儿脑袋才弄明白。当转换开始工作时,我必须将REPLACE函数移到机箱内

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