在mysql中将Varchar中的科学记数法转换为Decimal

时间:2017-03-05 22:54:51

标签: mysql string casting decimal

在mySQL数据库中,在数据集中,所有值都存储为varchar,显示欧元金额,如下所示:'EUR 2.5E + 2','EUR 56.95','EUR 1E + 2'

现在,我想让它再次有用并将其转换为十进制以进行进一步计算,但无法弄清楚如何做到这一点。

我试图按照建议的解决方案来解决这个问题: Casting Scientific Notation (from varchar -> numeric) in a view

但是,我无法将解决方案作为查询,视图或存储过程进行复制,更不适合我的问题。

我真的希望有人可以帮助我。 提前谢谢!

2 个答案:

答案 0 :(得分:2)

非常感谢Rick James,你的解决方案非常有效。 但是,我更喜欢将子字符串显式地转换为十进制:

CAST(SUBSTRING_INDEX(p.amount, ' ', -1) AS DECIMAL(5,2))

现在我可以对结果进行计算(请参阅Rick的回答下面的评论)。

答案 1 :(得分:1)

SELECT SUBSTRING_INDEX('EUR 2.5E+2', ' ', -1) + 0;

->

250

注意:此假定有一个空格,数值在空格之后。