我在数据集中有一个列,其中包含一个货币指标和该货币的相应金额(即35,000.05美元)。我试图获取包含数字的列的子字符串并将其转换为十进制。但是,无论何时进行转换,它只会返回我尝试获取的数字的前两位数字。

例如,将发生以下情况:

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

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

    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列的前两位数字有什么原因?结果值的子字符串相同,所以我不明白为什么强制转换它会更改数据。

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

最佳答案

您必须先从字符串中删除逗号,然后再将其强制转换为数字:

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

09-26 03:36