我的数据集中有一列包含货币指标和该货币的相应金额(即35,000.05美元)。我试图获取包含数字的列的子字符串并将其转换为小数。但是,每当我转换它时,它只返回我想要获得的数字的前两位数字。
例如,这就是:
在此示例中,这是我的查询:
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列的前两位数字?结果值的子串是相同的,所以我不明白为什么投射它会改变数据。
任何帮助将不胜感激,谢谢。
答案 0 :(得分:1)
在将字符串转换为数字之前,必须从字符串中删除逗号:
CAST(SUBSTRING(REPLACE(`Annualized Opportunity Amount`,',',''),5) AS DECIMAL(10,2))