如何将货币格式(来自 Excel)转换为 SQL 中的小数?

How to convert a currency format (from Excel) into a decimal in SQL?

我在 table 中有一列名为 [AMOUNT]。该列包含以货币格式从 excel sheet 上传的值(即 $158.96、$78.36、$714.98、$7.73 等)。如何将这些值转换为小数,使其不再具有 $ 符号或括号(但括号值仍应具有负号)?

下面是我认为可行的方法,它解决了类似的问题,但值略有不同(负值没有括号)。

CAST(CONVERT(VARCHAR(10), CONVERT(MONEY, [AMOUNT])) AS DECIMAL(14,4) AS AMOUNT_V2
Amount Amount_V2
8.96 158.96
(.36) -78.36

您需要处理括号以产生负数 - 一种方法是使用 translate,例如

select Cast(Translate('(.36)','()','- ') as money)

编辑 - 如果是 2016 年或之前

,则使用嵌套 替换
select Cast(Replace(Replace('(8.45)','(','-'),')','') as money)