0
我有一个简单的CASE语句,其中在我希望显示为' - '的ELSE块数字列中。 但它给我一个错误如何在CASE语句中将数字显示字符串替换为' - '
Arithmetic overflow error converting varchar to data type numeric.
SELECT
CASE WHEN ChargeName = 'Premium' THEN CompanyCommissionPercentage ELSE '-' END AS CompanyCommissionPercentage
,CASE WHEN ChargeName = 'Premium' THEN RemitterCommissionPercentage ELSE '-' END AS RemitterCommissionPercentage
,CASE WHEN ChargeName = 'Premium' THEN RemitterCommission ELSE '-'END AS RemitterCommission
,CASE WHEN ChargeName = 'Premium' THEN GrossCommission ELSE '-'END AS GrossCommission
FROM @tmpAccountsPayable
是的。一个结果集只能有一个列的数据类型。由于遇到的第一个值是数字,所以该列设置为数字。系统然后尝试隐式地将 - 转换为数字并失败,从而导致错误。因此,将数字转换为varchar数据类型可以解决您遇到的问题。注意:您不需要将' - '转换为varchar(10),它已经是字符数据。 – xQbert
不知道这件简单的事情。谢谢你的解释。 – Oleg
很高兴帮助,并很高兴你能弄清楚该怎么做。我所做的只是提供原因。我发现知道为什么有帮助!另请注意:在Excel中,您可以传入0而不是 - 并且Excel将格式化为零作为破折号。我相信它被称为会计风格(或者从主菜单下的工具栏中选择',',号码为 – xQbert