在mySQL数据库中,在数据集中,所有值都存储为varchar,显示欧元金额,如下所示:'EUR 2.5E + 2','EUR 56.95','EUR 1E + 2'
现在,我想让它再次有用并将其转换为十进制以进行进一步计算,但无法弄清楚如何做到这一点。
我试图按照建议的解决方案来解决这个问题: Casting Scientific Notation (from varchar -> numeric) in a view
但是,我无法将解决方案作为查询,视图或存储过程进行复制,更不适合我的问题。
我真的希望有人可以帮助我。 提前谢谢!
答案 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
注意:此假定有一个空格,数值在空格之后。