我目前坐在一个MySQL表上,该表的列名为unitprice(VARCHAR)格式如下;
示例
5102938
304948
495845
数据代表金钱;最后两个数字总是美分。
结果
51029.38
3049.48
4958.45
我的目标是在第三个最终位置插入一个点,这样我就可以使用CAST / CONVERT将列从VARCHAR转换为DECIMAL。 MySQL是否有正则表达式支持,这可能允许我这样做?或任何内置功能?
答案 0 :(得分:4)
只需转换为无符号并除以100:
select cast(unitprice as unsigned) / 100.0
如果值非常大,您可能需要大于unsigned
的值,但对于大多数货币和价格来说,这是一个合理的选择。
当然,如果你想要它作为小数,那么使用:
select cast(unitprice as decimal(10, 2)) / 100.0
请务必加入适合您问题的精确度和比例尺。