Ваш вопрос действительно запутан, но я отвечу по следующим параметрам:
@ labourqty - это VARCHAR
@ labourqty может так или иначе содержать любое из следующих значений:
'1200'
'1200.42'
'1,200'
'1,200.42'
В этом случае CONVERT(DECIMAL(12, 4), REPLACE(@LABORQTY, ',', ''))
действительно выдаст десятичное число с точностью до 4 цифр дробной точности. Будет ли ваш инструмент запросов / язык программирования выводить его как 1200.4200 или нет - это совсем другой вопрос; вполне может просто вывести 1200.42 и сбросить конечные нули
Если вы все еще получаете Error converting data type varchar to numeric.
, в числовой строке есть некоторые другие символьные данные (не запятая)
Если вам определенно нужны конечные нули, отформатируйте их в строку перед выводом
FORMAT(CONVERT(decimal(12,4), '1200.42'), '0.0000')
Будет сгенерирована строка с 4 концевыми нулями