如何将货币格式(来自 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)
我在 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)