在VARCHAR列上进行算术运算

时间:2015-01-18 02:02:45

标签: mysql

'Winning','BuyIn','ChampFund'下面的3个字段是VARCHAR数据类型,其值包含$ 250.00之类的$字符

我正在寻找的结果示例:

'赢'''买入' - 'ChampFund'为'净'    250美元 - 45美元 - 5美元= 200美元

如果它们是INT数据类型,我会

Select *, Winnings - BuyIn - ChampFund As Net From gamedetail

任何关于如何实现这一点的建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

您根本不应将数字数据存储在字符串列中。这是一个非常糟糕的主意。

但是,您可以轻松地执行您想要的操作,因为MySQL会在数字上下文中将字符串转换为数字。类似的东西:

select (replace(replace(Winnings, '$', ''), ',', '') -
        replace(replace(BuyIn, '$', ''), ',', '') -
        replace(replace(ChampFund, '$', ''), ',', '')
       )

我在逻辑中包含了逗号,因为通常在存在货币符号时,千位分隔符也是如此。此外,您不应将列名称放在单引号中,但这可能就是您提出问题的方式。