我在数据集中有一个列,其中包含一个货币指标和该货币的相应金额(即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列的前两位数字有什么原因?结果值的子字符串相同,所以我不明白为什么强制转换它会更改数据。
任何帮助将不胜感激,谢谢。
最佳答案
您必须先从字符串中删除逗号,然后再将其强制转换为数字:
CAST(SUBSTRING(REPLACE(`Annualized Opportunity Amount`,',',''),5) AS DECIMAL(10,2))