我有一张超过16,000行的表格,描述了欠客户账单的钱。不幸的是,欠款是以一种奇怪的方式设置的 - 货币金额存储为varchar,而且当钱到期时,减号就在这个数字的右边:
Amount
36.30
21.48-
132.65-
87.91-
1.20
我在我的表中添加了一个名为Amount_num
的新列,我想对我的表做一个更新,它会给我以下内容:
Amount Amount_num
36.30 36.30
21.48- -21.48
132.65- -132.65
87.91- -87.91
1.20 1.20
我尝试了以下更新查询:
UPDATE [CHARGE_TABLE]
SET [Amount_num] = CAST ([Amount] as decimal (18,2))
这使我'错误地将数据类型varchar转换为数字'。我应该改变什么?
答案 0 :(得分:1)
这适用于您的奇怪字符串格式。
UPDATE [CHARGE_TABLE]
SET [Amount_num] = convert(numeric(18,2), Case when Amount like '%-' then '-' else '' end + REPLACE(Amount, '-', ''))