【发布时间】:2018-01-30 16:23:37
【问题描述】:
我在数据集中有一列,其中包含货币指标和该货币的相应金额(即 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 列的前 2 位数字?结果值的子字符串是相同的,所以我不明白为什么转换它会改变数据。
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
去掉子字符串中的逗号有帮助吗?
-
您需要先替换
,,12,345不是数字。将数字存储为数字,则没有问题。 -
试试
select cast(replace(dacolumn, ',' , '') as decimal(10,2)) -
哇,没想到。完全有道理。