SQL将点或逗号插入varchar(会计,金钱)

时间:2015-02-21 15:13:56

标签: mysql sql regex type-conversion

我目前坐在一个MySQL表上,该表的列名为unitprice(VARCHAR)格式如下;

示例
5102938
304948
495845

数据代表金钱;最后两个数字总是美分。

结果
51029.38
3049.48
4958.45

我的目标是在第三个最终位置插入一个点,这样我就可以使用CAST / CONVERT将列从VARCHAR转换为DECIMAL。 MySQL是否有正则表达式支持,这可能允许我这样做?或任何内置功能?

1 个答案:

答案 0 :(得分:4)

只需转换为无符号并除以100:

select cast(unitprice as unsigned) / 100.0

如果值非常大,您可能需要大于unsigned的值,但对于大多数货币和价格来说,这是一个合理的选择。

当然,如果你想要它作为小数,那么使用:

select cast(unitprice as decimal(10, 2)) / 100.0

请务必加入适合您问题的精确度和比例尺。