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