在MySQL中将字符串转换为十进制的问题

时间:2018-01-30 16:23:37

标签: mysql sql casting

我的数据集中有一列包含货币指标和该货币的相应金额(即35,000.05美元)。我试图获取包含数字的列的子字符串并将其转换为小数。但是,每当我转换它时,它只返回我想要获得的数字的前两位数字。

例如,这就是:

enter image description here

在此示例中,这是我的查询:

    SELECT 
       SUBSTRING(`Annualized Opportunity Amount`,1,3) as `test1`,
       (SUBSTRING(`Annualized Opportunity Amount`,5)) as test2,
       case when SUBSTRING(`Annualized Opportunity Amount`,1,3) = 'AUD' 
              then CAST(SUBSTRING(`Annualized Opportunity Amount`,5) AS DECIMAL(10,2)) 
       else 0 END as `test3`
    from annualized_opportunity_revenue

有什么理由说为什么在test3中只返回test2列的前两位数字?结果值的子串是相同的,所以我不明白为什么投射它会改变数据。

任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:1)

在将字符串转换为数字之前,必须从字符串中删除逗号:

CAST(SUBSTRING(REPLACE(`Annualized Opportunity Amount`,',',''),5) AS DECIMAL(10,2))